Android 按钮响应点击事件的三种实现方式

在 Android 开发中,按钮响应点击事件三种实现方法,下面依次介绍。

1. 匿名内部类

这种方式一般适用于自己写 demo 测试时使用,优点就是快速。

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button btn = findViewById(R.id.button);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 响应事件
                Toast.makeText(MainActivity.this,"测试按钮",Toast.LENGTH_SHORT).show();
            }
        });
    }

2. 由 Activity 实现 OnClickListener 接口

这种方式是在项目中应用最多的写法。因为这种写法可以减少代码量,尤其是在 Activity 上有多个点击事件的时候,更加按钮的id来区分按钮响应;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button btn = findViewById(R.id.button);
        btn.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        //根据按钮 id 来区分是哪个按钮的点击事件;
        switch (v.getId()){
            case R.id.button:
                // 响应事件
                Toast.makeText(MainActivity.this,"测试按钮2",Toast.LENGTH_SHORT).show();
                break;
            // case 其他按钮
            default:
                break;
        }
    }

3. 在布局文件中添加 onClick 属性

这种方式不用在 Activity 中声明组件对象就可以响应点击事件,虽然在看起来很轻便,但是在维护测试的时候,不容易找到 button 相对应的点击事件,所以不太推荐使用。
首先在 XML 布局文件中添加 onClick 属性,android:onClick=“buttonClick”

    <Button
        android:onClick="buttonClick"
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

在 Activity 中实现

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    }

    public void buttonClick(View v){
        // 响应事件
        Toast.makeText(MainActivity.this,"测试按钮3",Toast.LENGTH_SHORT).show();
    }

4. 运行效果

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值