原文网址:http://www.yrom.net/blog/2011/12/12/android-4-onclicklistener-of-button/
Button控件setOnclickListener(View.OnClickListener listener)
来接收一个点击事件的监听器
- 自定义一个点击事件监听器类
让其实现View.OnClickListener的onClick(View v)
方法
1
2 3 4 5 |
class MyOnClickListener implements View.OnclickListener{ public void onClick(View v){ ... } } |
然后注册到按钮上
1
|
btn.setOnclickListener(new MyOnClickListener ()); |
- 采用匿名内部类的形式
当监听器只适用一个按钮时,可以将上面一个方法简化:
1
2 3 4 5 |
btn.setOnclickListener(new View.OnClickListener (){ public void onClick(View v){ ... } }); |
- 将当前Activity去实现View.OnClickListener
在Activity中实现其onClick()
方法。这样可以使多个按钮复用一个监听器。
注册监听时,只需将当前对象(this)给按钮即可:
1
|
btn.setOnclickListener(this); |
Tips:用switch-case针对各个Button的id来做相应的响应: eg.
1
2 3 4 5 6 7 8 9 10 11 12 13 |
public void onClick(View v){ switch(v.getId()){ case R.id.btn_login: login(); break; case R.id.btn_regist: regist(); break; default: doSomething(); break; } } |
- 在布局文件中显式指定按钮的onClick属性
对应Activity的布局文件加入形如:
1
2 3 4 5 |
<Button android:onClick="click" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/btn_text" /> |
这样按钮点击时会利用反射的方式调用对应Activity中的click()
方法:
1
2 3 |
public void click(View v){ ... } |
一个Button只能有一个onClick属性值,一个click()方法可以赋给多个Button。 在click()方法中可以针对Button的Id来做响应,参见上面的Tips。