Вопрос по events, android – Android - слушатель событий

9

Надеюсь это будет простой вопрос. У меня есть основной вид деятельности, на этом занятии я создаю экземпляр некоторого класса. Как отправить событие из одного класса в основной? Как настроить своего рода слушателя для отправки уведомлений между классами. Единственный вариант, который я знаю / использую сейчас, - это сохранить ссылку на родительский класс и напрямую вызвать некоторую функцию из дочернего класса.

Мне интересно, возможно ли создать что-то подобное в ActionScript, где я могу вызвать dispatchEvent (новое событие (& quot; имя & quot;)) и позднее настроить addEventlistener (функция & quot; name & quot;)?

«Я реализую некоторый класс» означает, что вы объявили вложенный класс внутри класса Activity? Chopin

Ваш Ответ

2   ответа
18

я реализую некоторый класс & quot; означает, что вы объявили вложенный класс внутри вашего класса Activity, тогда как вложенный нестатический класс будет иметь ссылку на объект родительского класса.

В общем, вы всегда можете создать шаблон диспетчера / слушателя самостоятельно. Создайте интерфейс слушателя и добавьте метод addListener или setListener в класс, который будет отправлять событие.

Пример слушателя:

public interface IAsyncFetchListener extends EventListener {
    void onComplete(String item);
    void onError(Throwable error);
}

Пример диспетчера событий:

public class FileDownloader {
    IAsyncFetchListener fetchListener = null;
    ...
    private void doInBackground(URL url) {
        ...
        if (this.fetchListener != null)
            this.fetchListener.onComplete(result);
    }

    public void setListener(IAsyncFetchListener listener) {
        this.fetchListener = listener
    }
}

Пример класса с прослушивателем событий:

public class MyClass {

    public void doSomething() {
        FileDownloader downloader = new FileDownloader();

        downloader.setListener(new IAsyncFetchListener() {

            public void onComplete(String item) {
                // do something with item
            }

            public void onError(Throwable error) {
                // report error
            }
        });

        downloader.start();
    }
}
1

который генерирует события.

Когда событие генерируется, переберите этот список и вызовите метод, который должны реализовать все слушатели (возможно, через интерфейс?)

Надеюсь, это помогло, JQCorreia

Похожие вопросы