Android的Button控件的点击事件的四种写法

方法一:内部类方法

  • 程序功能:
    这里写图片描述
  • 代码:

    public class MainActivity extends Activity {
    //activity被开启调用
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //根据ID需找到关心的Button控件
    Button bt_01 = (Button)findViewById(R.id.bt_01);
    Button bt_02 = (Button)findViewById(R.id.bt_02);
    Button bt_03 = (Button)findViewById(R.id.bt_03);
    //设置按钮的点击事件
    bt_01.setOnClickListener(new btClickListener1());
    bt_02.setOnClickListener(new btClickListener2());
    bt_03.setOnClickListener(new btClickListener3());
    }

    public class btClickListener1 implements OnClickListener{

    @Override
    public void onClick(View v) {
        //当用户点击按钮会显示如下信息
        Toast.makeText(MainActivity.this, "点击按钮1", Toast.LENGTH_SHORT).show();
    }
    

    }

    public class btClickListener2 implements OnClickListener{

    @Override
    public void onClick(View v) {
        //当用户点击按钮会显示如下信息
        Toast.makeText(MainActivity.this, "点击按钮2", Toast.LENGTH_SHORT).show();
    }
    

    }

    public class btClickListener3 implements OnClickListener{

    @Override
    public void onClick(View v) {
        //当用户点击按钮会显示如下信息
        Toast.makeText(MainActivity.this, "点击按钮3", Toast.LENGTH_SHORT).show();
    }
    

    }
    }

  • 方法说明:这个方法需要为每一个按钮来定义一个内部类来实现OnClickListener这个接口的onClick(View v)方法。

  • 应用场景:按钮比较少的时候,一个或者两个的时候,用还不错,但是多了,像计算器,那样就不适用了。

方法二:通过Activity来实现OnClickListener这个接口的onClick(View v)方法。

  • 代码:

    public class MainActivity extends Activity implements OnClickListener{

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

    Button bt_01 = (Button)findViewById(R.id.bt_01);
    Button bt_02 = (Button)findViewById(R.id.bt_02);
    Button bt_03 = (Button)findViewById(R.id.bt_03);
    
    bt_01.setOnClickListener(this);
    bt_02.setOnClickListener(this);
    bt_03.setOnClickListener(this);
    

    }

    @Override
    public void onClick(View v) {

    switch (v.getId()) {
    case R.id.bt_01:
        Toast.makeText(this, "点击按钮1", Toast.LENGTH_SHORT).show();
        break;
    case R.id.bt_02:
        Toast.makeText(this, "点击按钮2", Toast.LENGTH_SHORT).show();
        break;
    case R.id.bt_03:
        Toast.makeText(this, "点击按钮3", Toast.LENGTH_SHORT).show();
        break;
    default:
        break;
    }
    

    }
    }

  • 方法说明:这个方法通过Activity来实现OnClickListener这个接口的onClick(View v)方法,在设置按钮的点击事件,通过bt_01.setOnClickListener(this)这样的代码来设置,this代表MainActivity,onClick(View v)这个里面的参数View v,哪个按钮被点击,传来的参数就是哪个按钮,因为控件都是继承的View。

  • 应用场景:按钮比较多的时候,比较适用。

方法三:通过匿名内部类的方法实现。

  • 代码:

    public class MainActivity extends Activity {

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

    Button bt = (Button)findViewById(R.id.bt);
    bt.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(MainActivity.this, "不要酱紫吗", Toast.LENGTH_SHORT).show();
        }
    });
    

    }
    }

  • 方法说明:这个方法没什么可说的了,只要知道匿名内部类的都可以懂的。

  • 应用场景:适用于按钮比较少的场景,很方便。

方法四:在布局的xml文件中绑定点击事件

  • 代码:
  • 布局文件中:
    由于一直加布局文件不显示,所以就不加了,就说明一下,在Button的配置中添加:android:onClick=”onClick”这个属性。
  • Activity中对onClick方法的实现:

    public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    }
    public void onClick(View v){
    Toast.makeText(MainActivity.this, “哈哈”, Toast.LENGTH_SHORT).show();
    }
    }

  • 方法说明:这个方法直接在布局文件中通过android:onClick=”onClick”对按钮设置点击的属性,当按钮被点击时,调用名为onClick的方法,这个方法在Activity中实现。

  • 适用场景:在写一些示例代码的时候比较方便
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值