您好我只想为多个Activity使用单个处理程序。我能这样做吗?
答案 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
。