2012-09-02 66 views
2

我有一個接受幾個參數的靜態方法。在該方法內部,我創建了一個新對象並附加了一個新的偵聽器。問題是偵聽器塊需要訪問外部靜態方法變量,但我不知道如何引用它們。我知道如何使用非靜態方法來實現這一點,但不能使用靜態方法。在Java中,如何訪問新偵聽器塊中的靜態方法參數?

下面是代碼:

由星號所包圍
v.setOnTouchListener(new OnTouchListener() { 

      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       switch (event.getAction()) { 
       case MotionEvent.ACTION_UP:    
        ((Activity)*context*).startActivityForResult(*intent*, 0); 
        break; 
       } 

       return true; 
      } 
     }); 

上下文和意圖變量傳遞到靜態方法的對象。由於OnTouchListener是一個內部塊,它不知道這些對象。我如何參考他們?

+0

'OnTouchListener'這是Android版嗎? –

+0

是的,這是一個android項目。 – srowley

回答

2

聲明靜態方法的參數爲final,或者在創建偵聽器之前將傳入的參數分配給靜態方法中的最終局部變量。您可以使用匿名類定義中的最終引用。

+0

我不能讓它們成爲最終的,因爲每次我調用靜態方法時它們都會有所不同。 – srowley

+0

他們只是最後的呼叫範圍,這是你所需要的。你也可以使用最終的局部變量。 – Dev

+0

好的,謝謝!我第一次誤解了你的答案,但回頭看了一下,它很有用。 – srowley