定義外部監聽器

我應該什麼時候使用它

  • 當內聯偵聽器中的程式碼太大而你的方法/類變得醜陋且難以閱讀時
  • 你希望在應用的各種元素(檢視)中執行相同的操作

要實現此目的,你需要建立一個實現 View API 中的一個偵聽器的類。

例如,在長按任何元素時提供幫助:

public class HelpLongClickListener implements View.OnLongClickListener 
{
    public HelpLongClickListener() {
    }

    @Override 
    public void onLongClick(View v) {
        // show help toast or popup
    }
}

然後你只需要在你的 Activity 中有一個屬性或變數來使用它:

HelpLongClickListener helpListener = new HelpLongClickListener(...);

button1.setOnClickListener(helpListener);
button2.setOnClickListener(helpListener);
label.setOnClickListener(helpListener);
button1.setOnClickListener(helpListener);

注意: 在分離的類中定義偵聽器有一個缺點,它不能直接訪問類欄位,因此你需要通過建構函式傳遞資料(上下文,檢視),除非你將屬性設定為 public 或定義 geters。