0

こんにちは私は複数のアクティビティに単一のハンドラーのみを使用したいのですが、それはできますか?

4

3 に答える 3

4

Octavianの回答に少し追加すると、実際には1つのHandlerクラスがありますが、アクティビティごとに1つのインスタンスがあります。

例えば:

public class MyHandler extends Handler {
  // Keep a weak reference to the activity owning the handler
  private WeakReference<Activity> activityRef;

  public MyHandler(Activity a) {
    this.activityRef = new WeakReference<Activity>(a);
  }

  public void handleMessage(Message msg) {
    // do your stuff here, for instance, finish the activity
    if (activityRef.get()!=null) {
      activityRef.get().finish();
    }
  }
}

それからあなたの活動で:

public class MyActivity extends Activity {
  protected MyHandler handler;

  public void onCreate() {
    // This is where you'll re-use the handler code
    handler = new MyHandler(this);
  }
}
于 2011-04-26T13:21:33.483 に答える
2

もちろん。目的のインターフェイスを実装する新しいクラスを作成し、必要に応じてインスタンス化します。

OnClickListener例として見てみましょう。クラスを作成しますExternalClickListener

public class ExternalClickListener implements View.OnClickListener {

    @Override
    public void onClick(View v) {
        // Do whatever you want.
    }

}

今、あなたがそれを設定したいとき、Buttonそれは

btn.setOnClickListener(new ExternalClickListener());
于 2011-04-26T13:14:20.537 に答える
-2

このハンドラーをとして宣言し、staticそれにアクセスします:MyClass.myHandler

于 2011-04-26T13:04:53.627 に答える