2011-08-18 52 views
3

我有了一個按鈕,我分配一個OnClickListener主Activity類:在Android上,爲什麼View.OnClickListener實例會像調用它們自己的方法一樣調用其父方法?

public class MyMainClass extends Activity { 
    protected void initWidgets() { 
     btAddProfile = (Button) findViewById(R.id.btAddProfile); 
     btAddProfile.setOnClickListener(onAddProfileClick); 
    } 

    protected View.OnClickListener onAddProfileClick = new View.OnClickListener() { 
     public void onClick(View view) { 
      addHotspot(); 
     } 
    }; 

    protected void addHotspot(){ 
     //doStuff 
    } 
} 

的onAddProfileClick實例MyMainClass的孩子,但它是可以調用MyMainClass的addHotspot()函數沒有引用MyMainClass。這怎麼可能?

+0

僅供參考這不是一個android特有的現象。 –

+0

請參閱http://download.oracle.com/javase/tutorial/java/javaOO/nested.html –

回答

2

這不是它們的父類,而是它們的封閉類,它們可能會這樣做,因爲它們與封閉對象相關聯並在其範圍內。 (當你編寫addHotspot()時,有一個隱含的調用MyMainClass.this.addHotspot()

+0

謝謝,這很有道理。 (我沒有足夠的聲望投票給你,對不起!) – Jooky

相關問題