У меня есть интерфейс приложения, разделенный на фрагменты. Я хотел бы создать метод, который можно вызывать из разных объектов (скажем, 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)
. Любое решение?
Опубликовать полную ошибку stacktrace. Это может дать некоторые подсказки. – kosa
'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
Мой метод имеет подпись' launchSearch (Object) '. – b3by