Android 按钮的启动方式


Android中都是靠点击实现和用户交互的。所以点击的实现方式一定要全部搞懂。
先把布局和代码贴出来,超级简单的布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

 <Button
        android:id="@+id/btn"
        android:text="按钮"
        android:onClick="btnClick"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

</LinearLayout>
public class MainActivity extends AppCompatActivity {
 	private Button btn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn = findViewById(R.id.btn);
        //第一种方式
//        btn.setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View view) {
//                //TODO 这里写你点击按钮时需要执行的代码
//            }
//        });
        //第二种方式
        btn.setOnClickListener(new MyButtonOnClickLintener());
    }
    //第二种方式
    class MyButtonOnClickLintener implements  View.OnClickListener{
        @Override
        public void onClick(View view) {
			//TODO 这里写你点击按钮时需要执行的代码
        }
    }
}

第一种 setOnClickListener

第一种,最简单,最好理解,按钮调用setOnClickListener方法,参数传递一个匿名对象,实现接口的方法,在方法里面写你想要执行的代码。

        //第一种方式
//        btn.setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View view) {
//                //TODO 这里写你点击按钮时需要执行的代码
//            }
//        });

第二种 自定义一个类,实现View.OnClickListener接口

和第一种差不多,就是在你自定义的类中可以增加一些其他逻辑。

  		//第二种方式,这种方式传递的参数,就是自定义创建的类。具体实现业务就在这个类中写
        btn.setOnClickListener(new MyButtonOnClickLintener());
        //第二种方式
    class MyButtonOnClickLintener implements  View.OnClickListener{
        @Override
        public void onClick(View view) {
			//TODO 这里写你点击按钮时需要执行的代码
        }
    }
        

第三种 在布局文件中设置onClick属性

在布局文件中给button设置onClick属性,写点击事件方法名,然后在activity中创建一个方法,和设置的方法名相同就行了。参数一定要是View

    public void btnClick(View view) {
    	//TODO 这里写你点击按钮时需要执行的代码
    }

第四种 类本身实现View.OnClickLinstener接口

让你的Activity实现View.OnClickLinstener接口,然后重写onClick方法,如果只有一个按钮,就直接写你的代码就行了,如果是多个,一般都是结合switch使用,方便统一管理所有的点击事件。

       @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.btn:
                //TODO 这里写你点击按钮时需要执行的代码
                break;
        }
    }

下面在贴一遍完整代码,四种点击方式都写在里面。


public class MainActivity extends AppCompatActivity implements View.OnClickListener{

    private Button btn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn = findViewById(R.id.btn);
        //第一种方式,给按钮设置setOnClickListener
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //TODO 这里写你点击按钮时需要执行的代码
            }
        });
        //第二种方式,结合自定义的类,实现点击事件
        btn.setOnClickListener(new MyButtonOnClickLintener());
    }

    /**
     * 第三种方式,在布局文件里设置onClick属性,写好方法名,在这里写相同方法名的方法
     * @param view
     */
    public void btnClick(View view) {
        //TODO 这里写你点击按钮时需要执行的代码
    }

    /**
     * 第四种方式,实现View.OnClickListener接口,重写onClick方法
     * @param view
     */
    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.btn:
                //TODO 这里写你点击按钮时需要执行的代码
                break;
        }
    }

    /**
     * 第二种方式,自定义一个类,实现View.OnClickListener接口,重写onClick方法
     */
    class MyButtonOnClickLintener implements  View.OnClickListener{
        @Override
        public void onClick(View view) {
            //TODO 这里写你点击按钮时需要执行的代码
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值