失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > android点击按钮事件监听事件 Android 按钮响应点击事件的4种写法

android点击按钮事件监听事件 Android 按钮响应点击事件的4种写法

时间:2020-11-17 04:52:09

相关推荐

android点击按钮事件监听事件 Android 按钮响应点击事件的4种写法

在android 开发中,按钮响应点击事件有四种写法。下面依次介绍。

1. 匿名内部类

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

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_register);

Button button = (Button)findViewById(R.id.btn);

button.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

//响应事件

}

});

}

2. 自定义事件监听类

这种方式和第一种差不多,唯一的区别就是将响应事件的代码放到一个自定义的监听类里面。

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_register);

Button button = (Button)findViewById(R.id.btn);

button.setOnClickListener(new MyListener());

}

//让自定义监听类去实现 View 的 OnClickListener 接口

private class MyListener implements View.OnClickListener {

@Override

public void onClick(View v) {

//响应事件

}

}

3. 由 Activity 实现 OnClickListener 接口

这种方式是在项目中应用最多的写法。因为这种写法可以减少代码量,尤其是在 Activity 上有多个点击事件的时候。

public class RegisterActivity extends Activity implements View.OnClickListener {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_register);

Button button = (Button)findViewById(R.id.btn);

button.setOnClickListener(this);

}

public void onClick(View v) {

//根据 id 来区分分别是哪个按钮的点击事件

switch (v.getId()){

case R.id.btn:

//响应事件

break;

default:

break;

}

}

}

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

这种方式不用在 Activity 中声明组件对象就可以响应点击事件,虽然在看起来很轻便,但是在维护测试的时候,不容易找到 button 相对应的点击事件,所以不太推荐使用。

首先在 XML 布局文件中添加 onClick 属性

android:onClick="btnClick"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/btn"

android:id="@+id/btn" />

在 Activity 中实现方法

public void btnClick(View v){

//响应事件

}

如果觉得《android点击按钮事件监听事件 Android 按钮响应点击事件的4种写法》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。