2012-04-27 20 views
9

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

私はdispatchEvent(新しいEvent( "name"))を呼び出すことができ、後でaddEventListener( "name"関数)を呼び出すことができるActionScriptのようなものを作成することができますか?

+0

手段「私はいくつかのクラスを実装」アクティビティクラスの中にネストされたクラスを宣言したことはありますか? – Chopin

答えて

18

"私はいくつかのクラスを実装する"とは、ネストされた非静的クラスが、親クラスオブジェクトへの参照を持つよりも、あなたのアクティビティクラスの中に入れ子クラスを宣言したことを意味します。

通常、ディスパッチャ/リスナーのパターンを自分で作成できます。リスナインタフェースを作成し、イベントをディスパッチするクラスにaddListenerメソッドまたはsetListenerメソッドを追加します。リスナーの

例:イベントリスナーを持つクラスの

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

ちょうどリスナーを実装する(またはリストのイベントディスパッチャの

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

例イベントを生成するクラスのリスナー(リスナー)。イベントは、このリストを反復処理を生成し、すべてのリスナーが実装しなければならないメソッドを呼び出す(多分インタフェースを介しての?)

は、それが助けを願っている

、 JQCorreia

関連する問題