9

これが簡単な質問になることを願っています。私は主な活動をしています。この活動で、いくつかのクラスのインスタンスを作成します。あるクラスからメインのクラスにイベントを送信する方法は? クラス間で通知を送信するためのある種のリスナーをセットアップする方法。私が知っている/現在使用している唯一のオプションは、親クラスへの参照を保持し、子クラスからいくつかの関数を直接呼び出すことです。

DispatchEvent(new Event("name")) を呼び出して、後で addEventlistener("name" function) をセットアップできる ActionScript のようなものを作成できるかどうか疑問に思っています。

4

2 に答える 2

19

「私はいくつかのクラスを実装する」ということは、ネストされた非静的クラスよりもアクティビティクラス内でネストされたクラスを宣言したことを意味し、親クラスオブジェクトへの参照を持ちます。

一般に、いつでも自分でディスパッチャー/リスナー パターンを作成できます。リスナー インターフェイスを作成し、イベントをディスパッチするクラスに 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();
    }
}
于 2012-04-27T15:19:30.010 に答える
1

イベントを生成するクラスにリスナー (またはリスナーのリスト) を実装するだけです。

イベントが生成されると、このリストを繰り返し処理し、すべてのリスナーが実装する必要があるメソッドを呼び出します (おそらくインターフェイスを介して?)

お役に立てば幸いです、JQCorreia

于 2012-04-27T15:20:48.510 に答える