Доступ к подметоду аргумента переопределенного метода в Android? - PullRequest
2 голосов
/ 23 ноября 2010

Это, должно быть, нубский вопрос, но я не могу найти подходящего ожидания для достижения следующего:

В Android я создал подкласс MyView, расширяющий класс View. В B я определил метод mMethod, которого нет в классе View.

Теперь я хочу установить интерфейс OnClickListener на MyView. При этом я должен переопределить метод onClick при определении нового OnClickListener. Кроме того, я хотел бы получить доступ к методу mMethod в onClick, но переопределенный метод ожидает экземпляр класса View, а не MyView. Так что я могу сделать?

Чтобы быть более точным:

public class MyView extends View{
  ...
    public void mMethod(){
    ...
    }
}

А в основном классе (Activity)

MyView  myView = new MyView () 
//It's not the correct constructor, but it's not the point

myView.setOnClickListener(new OnClickListener(){

    @Override
    public boolean onClick(View v){
        //Here I would like to access mMethod of MyView
        ???
    }

}

Является ли использование myView.mMethod() единственным решением? Можно ли опустить v до (MyView)v? Если да, то как это сделать? Должен ли я определить подчиненный интерфейс?

Спасибо!

1 Ответ

3 голосов
/ 23 ноября 2010

Ну, вы можете использовать:

public boolean onClick(View v) {
    MyView mv = (MyView) v;
    mv.myMethod();
}

Таким образом, вы узнаете, что работаете в правильном представлении - и вы получите исключение, если вам будет предоставлен неправильный вид. (Если вы не хотите выдавать исключение, вы можете использовать instanceof, чтобы сначала проверить, что это правильный вид.)

...