定義外部監聽器
我應該什麼時候使用它
- 當內聯偵聽器中的程式碼太大而你的方法/類變得醜陋且難以閱讀時
- 你希望在應用的各種元素(檢視)中執行相同的操作
要實現此目的,你需要建立一個實現 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。