爲按鈕(Button)添加響應事件,需要爲其設置監聽器(Listener)。本文總結了Android中常用的幾種Button Listener。
第一種:匿名內部類作爲事件監聽器類
1
2
3
4
5
6
|
Button button = (Button)findViewById(R.id.button); //通過資源內部ID爲button的資源來實例化button對象 button.setOnClickListener( new
OnClickListener { //綁定匿名的監聽器,並執行您所要在點擊按鈕後執行的邏輯代碼 public
void onClick(View v) { Toast.makeText(MyActivity. this ,
"使用匿名內部類創建監聽器" , Toast.LENGTH_LONG).show(); } }); |
大部分時候,事件處理器都沒有什麼利用價值(可利用代碼通常都被抽象成了業務邏輯方法),因此大部分事件監聽器只是臨時使用一次,所以使用匿名內部類形式的事件監聽器更合適,對於使用匿名內部類作爲監聽器的形式來說,唯一的缺點就是匿名內部類的語法有點不易掌握。
第二種:內部類作爲監聽器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
public
class ButtonListener extends
Activity { public
void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.main); Button button = (Button)findViewById(R.id.button); MyListener myListener =
new MyListener(); //實現接口的對象 button.setOnClickListener(myListener); } class
MyListener implements
OnClickListener { //實現OnClickListener接口 public
void onClick (View v){ System.out.println( "使用內部類創建按鈕監聽器" ); } } } |
將事件監聽器類定義成當前類的內部類。1、使用內部類可以在當前類中複用監聽器類,因爲監聽器類是外部類的內部類,2、所以可以自由訪問外部類的所有界面組件。這也是內部類的兩個優勢。上面代碼就是內部類的形式!!
三.使用外部類
1
2
3
4
5
6
7
8
9
10
11
|
public
class ButtonListener extends
Activity { ... ... Button button = (Button)findViewById(R.id.button); button.setOnClickListener( new
ButtonListener()); } public
class ButtonListener implements
OnClickListener { public
void onClick (View v){ System.out.println( "使用外部類創建按鈕監聽器" ); } } |
四.綁定到標籤
在佈局文件中爲Button控件添加屬性:
android:onClick="ButtonListener"
然後在java中定義ButtonListener方法
public void ButtonListener (View source) { System.out.println("使用標籤屬性創建按鈕監聽器"); }