「私はいくつかのクラスを実装する」ということは、ネストされた非静的クラスよりもアクティビティクラス内でネストされたクラスを宣言したことを意味し、親クラスオブジェクトへの参照を持ちます。
一般に、いつでも自分でディスパッチャー/リスナー パターンを作成できます。リスナー インターフェイスを作成し、イベントをディスパッチするクラスに 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();
}
}