Android常見的按鈕監聽器實現方式

爲按鈕(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("使用標籤屬性創建按鈕監聽器");
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章