他のアプリと連携するサービスを書いています。すでにリスナーを持っているビュー(ボタン、テキストビューなど)にリスナーを登録します。それらを自分のリスナーに置き換えて(動作)、いくつかのことを行ってから、リスナーの登録を解除して古いリスナーを復元する必要があります。
- onClickListener を持つボタンを持つアプリが実行されています
- 私のサービスはUIスレッド内にonClickListenerを登録します+何かをします
- 私のサービスは古いリスナーを復元します
-メソッドがあれば簡単view.getOnClickListener
です。次に、古いリスナーを保存し、完了したら新しいリスナーを置き換えることができます。
ビューからリスナーを取得する方法や、同じタイプの複数のリスナーを 1 つのビューにバインドする方法はありますか?
Button btn = (Button) findViewById(R.id.btn1);
btn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//do something
}
});
// I need to do, but found no solution for that.
View.OnClickListener oldListener = btn.getOnClickListener();
新しいリスナーをビューに登録すると、古いリスナーは上書きされますよね? 両方のリスナー (「新しい」と「古い」) が同時に存在する場合も問題ありません。古いものだけはなくしてはいけません。
編集:残念ながら、割り当て時にリスナーを保存する可能性はありません。ビューコンポーネントから逆方向に取得する必要があります。
ありがとう