2011-08-06 33 views
0
btnOpen.setOnClickListener(new OnClickListener() 
{ 
    public void onClick(View v) 
     { 
      Toast.makeText(getBaseContext(), 
      "Time selected:" + 
      timePicker.getCurrentHour() + 
      ":" + timePicker.getCurrentMinute(), 
      Toast.LENGTH_SHORT).show(); 
     } 
}); 

如何將其轉換爲非匿名內部類?什麼是這個匿名內部類的替代品?

回答

1

你會只需要使它成爲一個內部類:

btnOpen.setOnClickListener(new InnerOnClickListener()); 

... 

private class InnerOnClickListener implements OnClickListener 
{ 
    public void onClick(View v) 
    { 
     Toast.makeText(getBaseContext(), 
         "Time selected:" + 
         timePicker.getCurrentHour() + 
         ":" + timePicker.getCurrentMinute(), 
         Toast.LENGTH_SHORT).show(); 
    } 
} 

注意使用getBaseContext()這實際上將在創建類的實例調用。

如果timePicker是您的方法中的局部變量(與創建類中的實例變量相反),您需要將其傳遞給內部類的構造函數。

+0

嵌套類將需要爲 私有類InnerOnClickListener擴展OnClickListener –

+0

@Brett要聲明:這不是一個接口?因此實現,而不是延伸。 (我在幾分鐘前糾正了我的原文。) –

+0

感謝Jon。我看到了一些小姐。試圖有幫助。 –

0

你應該聲明View.OnClickListener接口實現:

btnOpen.setOnClickListener(buttonClickListener); 
... 
private View.OnClickListener buttonClickListener = new View.OnClickListener() { 
    @Overide 
    public void onClick(View v) { 
     Toast.makeText(getBaseContext(), 
       "Time selected:" + 
       timePicker.getCurrentHour() + 
       ":" + timePicker.getCurrentMinute(), 
       Toast.LENGTH_SHORT).show(); 
     } 
    } 
} 
+1

雖然這仍然是一個匿名的內部類,不是嗎? –

+1

@ basicsharp-我的朋友你的答案也是有用的,因爲現在我能夠區分這兩個 – sanjay

+0

不客氣。 – basicsharp