是否可以使用One UI Handler进行多项活动?

时间:2011-04-26 13:00:35

标签: android handlers

您好我只想为多个Activity使用单个处理程序。我能这样做吗?

3 个答案:

答案 0 :(得分:4)

要向Octavian答案添加一点,您实际上只有一个Handler类,但每个活动只有一个实例。

例如:

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);
  }
}

答案 1 :(得分:2)

当然。创建一个实现所需接口的新类,并在需要时对其进行实例化。

OnClickListener为例。创建课程ExternalClickListener

public class ExternalClickListener implements View.OnClickListener {

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

}

现在,当你想在Button上设置它时,它就是

btn.setOnClickListener(new ExternalClickListener());

答案 2 :(得分:-2)

将此处理程序声明为static并访问它:MyClass.myHandler