处理一个事件,有两种方式:
实现回调接口(interface)举例
public class A implements View.OnClickListener {
public void onClick(View v) {
....
}
@Override
protected void onCreate(Bundle savedInstanceState) {
...
aboutLayout = (LinearLayout) findViewById(R.id.aboutLayout);
aboutLayout.setOnClickListener(this);
}
}
创建一个实现回调接口(interface)的内部类
public class ActivityAbout {
private class ViewClickListener implements View.OnClickListener {
public void onClick(View v) {
..
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
...
ViewClickListener listener = new ViewClickListener();
aboutLayout = (LinearLayout) findViewById(R.id.aboutLayout);
aboutLayout.setOnClickListener(listener);
}
}
哪个更好?
最佳答案
选择完全取决于您计划使用该类的方式,每种方法都是有效的并且有其相应的优点和缺点:
onClick() 函数,这可能会或可能不会成为组织困惑。 onClick() 函数并在更合乎逻辑的方法中使用它们。但是我想介绍方法三,匿名回调:
public class MyActivity extends Activity {
OnClickListener myClickListener1 = new OnClickListener() {
public void onClick(View v) {
..
}
}
OnClickListener myClickListener2 = new OnClickListener() {...}
@Override
protected void onCreate(Bundle savedInstanceState) {
...
view.setOnClickListener(myClickListener1);
}
}
请注意,与方法 2 不同,我没有创建自定义类。我会避免创建新的自定义类,除非您要添加更多功能、保留局部变量或以其他方式修改 OnClickListener 的基本功能。
关于java - 处理一个事件 : implement an interface or using inner class to handle the interface. 哪个更好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12342125/