2011-08-18 53 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

相关问题