Frage an events, android, class, android-activity, listener – Android - Ereignislistener

9

Ich hoffe das wird eine einfache Frage. Ich habe eine Hauptaktivität, bei dieser Aktivität erstelle ich eine Instanz einer Klasse. Wie sende ich ein Ereignis aus einer Klasse an die Hauptklasse? So richten Sie einen Listener ein, um Benachrichtigungen zwischen Klassen zu senden. Die einzige Option, die ich derzeit kenne / benutze, besteht darin, den Verweis auf die übergeordnete Klasse beizubehalten und direkt eine Funktion aus der untergeordneten Klasse aufzurufen.

Ich frage mich, ob es möglich ist, so etwas in ActionScript zu erstellen, wo ich dispatchEvent (new Event ("name")) und später setup addEventlistener ("name" -Funktion) aufrufen kann.

"Ich implementiere eine Klasse" bedeutet, dass Sie eine verschachtelte Klasse in Ihrer Aktivitätsklasse deklariert haben? Chopin

Deine Antwort

2   die antwort
1

rn) in der Klasse, die die Ereignisse generiert.

Wenn ein Ereignis generiert wird, iterieren Sie über diese Liste und rufen Sie eine Methode auf, die alle Listener implementieren müssen (möglicherweise über eine Schnittstelle?).

Hoffe es hat geholfen, JQCorreia

18

Ich implementiere eine Klasse" bedeutet, dass Sie eine verschachtelte Klasse in Ihrer Activity-Klasse deklariert haben, enthält die verschachtelte nicht statische Klasse einen Verweis auf das übergeordnete Klassenobjekt.

Im Allgemeinen können Sie immer selbst ein Dispatcher / Listener-Muster erstellen. Erstellen Sie eine Listener-Schnittstelle, und fügen Sie der Klasse, die das Ereignis auslöst, entweder die Methode addListener oder die Methode setListener hinzu.

Beispiel des Hörers:

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

Beispiel eines Event-Dispatchers:

<code>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
    }
}
</code>

Beispiel einer Klasse mit Ereignislistener:

<code>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();
    }
}
</code>

Verwandte Fragen