2012-07-10 4 views
0

У меня есть интерфейс приложения, разделенный на фрагменты. Я хотел бы создать метод, который можно вызывать из разных объектов (скажем, View или KeyEvent), без использования прослушивателей: я не хочу программно создавать элементы в макете.Метод, вызываемый из нескольких объектов

Так что, если бы я работал только с видом элементов, я создать метод, как этот

public void myMethod(View view) { 
    switch(view.getId()) { 
    ... 
    } 
} 

и связать все элементы с помощью onClick элемента в XML-файл. Отлично работает.

Есть ли способ, который я могу назвать своим методом также с другими типами объектов? В определенной ситуации мне нужно вызвать этот метод с помощью KeyEvent, поэтому я попытался так:

public void myMethod(Object caller) { 
    if(caller instanceof View) { 
     //button pressed 
     ... 
    } else if (caller instanceof KeyEvent) { 
     //key pressed 
     ... 
    } 
} 

Это не работает, я получаю исключение во время выполнения, если нажать на кнопку: он хочет метод с подпись myMethod(View view). Любое решение?

+1

Опубликовать полную ошибку stacktrace. Это может дать некоторые подсказки. – kosa

+0

'07-10 16: 38: 07.859: E/AndroidRuntime (331): java.lang.IllegalStateException: Не удалось найти метод launchSearch (View) в классе активности com.tinybox.androclickclient.Home для обработчика onClick в классе просмотра android.widget.Button с id 'stop_search_button' ' – b3by

+0

Мой метод имеет подпись' launchSearch (Object) '. – b3by

ответ

0

Предлагаю использовать два метода: один для видов для ключевых событий, и если вы хотите связать обработку с методом ОДНОГО, просто вызовите этот третий метод предыдущими методами.

Смежные вопросы