2015-10-04 128 views

回答

2

關於匿名類的一點是你不需要引用它們。如果你確實需要參考一個類,它不應該是匿名的。

只因爲OnClickListener s通常是匿名的並不意味着他們必須是。你可以這樣做。

private static final class MyListener implements View.OnClickListener { 

    private int field; 

    private int getField() { return field; } 

    // constructor and onClick() method 
} 

然後

MyListener myListener = new MyListener(); 
view.setOnClickListener(myListener); 
int a = myListener.getField(); 
0

這是一個有點棘手訪問的變量出現在OnClickListener,但你有兩種選擇:

  1. 創建一個可以存儲一些值類,在外部創建一個實例並將其放到最終。最後,例如用setter修改類的內部值。

  2. 如果您的變量過於簡單,無法創建對象,請在長度爲1的最終數組外部創建一個對象,並在匿名類中指定該0位置的值。

1

爲什麼要麻煩,要麼命名您的班級,要麼將該變量移動到外部班級。