Передача информации обратно из EventListener в Activity - PullRequest
1 голос
/ 07 ноября 2010

Я новичок в Android и в коде событий. Вместо того, чтобы встраивать нагрузки в анонимные классы прослушивателей событий в мою активность для обработки событий onClick и т. Д., Я определил отдельные классы для поддержания чистоты кода. Затем я использую их, например. как это

myButton.setOnClickListener (new MyEventListener ());

Итак, когда щелкают «myButton», метод onClick MyEventListener делает некоторые вещи.

Я хотел бы узнать лучшие практики для

а) доступ к вещам в моей Деятельности из прослушивателя событий. Например, чтобы изменить текст метки. Событие onClick принимает вид View, но это вид кнопки, по которой была нажата кнопка, поэтому, если метка НЕ ​​является дочерней по отношению к моей кнопке, я не могу использовать findViewById, чтобы получить указатель на нее. Я изменил конструктор, чтобы передать ссылку на метку, чтобы событие имело дескриптор, но не уверен, что это самый элегантный способ сделать это.

б) Передача информации обратно, например. когда мое событие срабатывает, я могу отключить некоторые поля EditText. Я думаю, что правильным способом сделать это, вероятно, является отправка другого события от моего прослушивателя событий, который прослушивает Activity, и, когда он видит событие, отключает соответствующие поля. Это способ сделать это в Android?

Надеюсь, кто-то может помочь, действительно ценю это.

Спасибо

1 Ответ

2 голосов
/ 07 ноября 2010

Альтернативой использованию явных прослушивателей событий, анонимных или нет, является использование атрибута onClick в xml для прямой отправки методу, как в следующем примере:

XML-файл макета:

 <Button android:onClick="buttonClickedCallback" />

Теперь просто определите метод вашей деятельности:

class CustomActivity extends Activity {
    public void buttonClickedCallback(View clickedButton) {
        // do stuff
    }
}

Это доступно начиная с Android 1.6, как описано в Изменения в пользовательском интерфейсе в Android 1.6 .

...