これは重複した質問のように思えますが、関連するトピックについて適切な回答を見つけることができませんでした.
OnClick
のイベントを処理する最善の方法は何かについて、たくさんの質問がありますButton
。
ここに私が遭遇したいくつかのオプションがあります:
1 -OnCreate
メソッドでプログラムによってリスナーを定義する:
button.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
//do stuff
}
});
2 - android:OnClick
XML でプロパティを設定する:
<Button android:id="@+id/btnDelete"
...
android:OnClick="btnDelete_OnClick"/>
OnClickListener
3 - クラスにインターフェイスを実装Activity
し、ボタンへの自己参照を渡します。
public class MainActivity extends Activity implements OnClickListener{
@Override
public void onClick(View v) {
//do stuff
}
protected void onCreate(Bundle savedInstanceState) {
...
button.setOnClickListener(this);
}
}
4 - 次のOnClickListener
タイプのフィールドを作成します。
private OnClickListener onClickHandler = new OnClickListener(){
@Override
public void onClick(View v) {
//stuff
}
};
protected void onCreate(Bundle savedInstanceState) {
...
button.setOnClickListener(onClickHandler);
}
Button
およびイベントに関してはOnClick
、常に XML で定義することを好みます。XML の方がクリーンです。
OnItemClick
しかし、 fromListView
やOnTimeSet
fromのような他のイベントはTimePickerDialog
どうでしょうか? XML で設定するために表示できるプロパティはありません。Listener インターフェースの実装はかなりクリーンなソリューションだと思いますが、それは一度しか実装できないことを意味し、2 つの同等のビューがある場合、それらのイベントを同じ場所で処理する必要があります。オプション 2 または 4 を使用すると、UI からさまざまなビューの複数のイベントを処理するときに、おそらく非常に面倒になります。
イベント処理の実装に他のオプションがある場合は、この件に関して他の意見を求めたいと思います。より良いものとして定義できる代替案は本当にあるのでしょうか、それとも各プログラマーの個人的な問題に過ぎないのでしょうか?