В Android почему экземпляры View.OnClickListener могут вызывать методы своих родителей, как если бы они были их собственными? - PullRequest
3 голосов
/ 19 августа 2011

У меня есть основной класс 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, и все же он может вызывать функцию addHotspot () MyMainClass безссылаясь на MyMainClass.Как это возможно?

1 Ответ

2 голосов
/ 19 августа 2011

Это не их родитель, а их окружающий класс, и они могут делать это, поскольку они связаны с окружающим объектом и в его области действия.(при написании addHotspot() происходит неявный вызов MyMainClass.this.addHotspot())

...