在Android上,为什么View.OnClickListener实例会将它们的父方法调用为自己的方法?

时间:2011-08-18 21:19:48

标签: java android namespaces onclick listeners

我有一个主Activity类,它有一个按钮,我分配了一个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的情况下调用MyMainClass的addHotspot()函数。怎么可能?

1 个答案:

答案 0 :(得分:2)

这不是他们的父级,而是他们的封闭类,他们可能会这样做,因为它们与封闭对象及其范围相关联。 (当您编写MyMainClass.this.addHotspot()

时,会对addHotspot()进行隐式调用