こんにちは私は複数のアクティビティに単一のハンドラーのみを使用したいのですが、それはできますか?
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 に答える