原文網址: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。