我知道这似乎是一个重复的问题,但我真的无法找到相关主题的好答案。
关于什么是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"/>
3 -OnClickListener
在类上实现接口Activity
并将自引用传递给 Button:
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);
}
当谈到 aButton
和OnClick
事件时,我总是更喜欢在 XML 上定义它,它只是更干净。
但是其他事件,例如OnItemClick
from theListView
或 the OnTimeSet
from theTimePickerDialog
呢?我看不到用于在 XML 上设置它的属性。我认为实现监听器接口是一个非常干净的解决方案,但这意味着我只能实现一次,如果我有两个相等的视图,我将不得不在同一个地方处理它们的事件。如果我使用选项 2 或 4,则在处理来自 UI 的不同视图的多个事件时可能会变得非常混乱。
如果事件处理有任何其他实现选项,我希望看到关于这个主题的其他意见。真的有替代方案可以定义为更好的替代方案,还是只是每个程序员的个人问题?