2015-12-14 83 views
0

Android中,我有以下情況(不工作的代碼,只是爲了證明什麼,我想談談):如何在android中使用公共變量裏面的函數?

public class Test extends ArrayAdapter<MyDataObject> { 

    public final int number = 4; 

    public Test(int number) { 
     this.number = number; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     // lines of code 
     imageView.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       Log.d("TESTTEST", "Number: " + this.number); 
      } 
     }); 
     // other lines of code 
     // ... 

變量number是公開的,但我不能夠引用裏面的內容onClick

在函數onClick內部有沒有簡單的方法來使用變量number的內容?還是我需要一個其他和無關的類,函數,方法,接口的enchilada ...?

+4

只能使用'number'(不含'this')或'Test.this.number' – Titus

+0

我需要使用初始'Test'具有正確的範圍?我理解正確嗎? – Alex

+1

你爲什麼試圖將數字分配給最終變量?只要刪除'這個'並且會工作 –

回答

1

刪除this keywork的

Log.d("TESTTEST", "Number: " + number); 

this內部具有對當前監聽器實例,不是父類的引用。

您還可以得到number使用:

Log.d("TESTTEST", "Number: " + Test.this.number); 

此外,setNumber正試圖設置一個值,最終的變數,這將無法編譯,直到你從變量聲明中刪除final

使用this的方法中,將工作,如果你的聽衆是這樣的:

imageView.setOnClickListener(new View.OnClickListener() { 
     int number = 0; // in this case you can use 'this' 
     @Override 
     public void onClick(View arg0) { 
      Log.d("TESTTEST", "Number: " + this.number); 
     } 
    }); 
相關問題