定义外部监听器
我应该什么时候使用它
- 当内联侦听器中的代码太大而你的方法/类变得丑陋且难以阅读时
- 你希望在应用的各种元素(视图)中执行相同的操作
要实现此目的,你需要创建一个实现 View API 中的一个侦听器的类。
例如,在长按任何元素时提供帮助:
public class HelpLongClickListener implements View.OnLongClickListener
{
public HelpLongClickListener() {
}
@Override
public void onLongClick(View v) {
// show help toast or popup
}
}
然后你只需要在你的 Activity
中有一个属性或变量来使用它:
HelpLongClickListener helpListener = new HelpLongClickListener(...);
button1.setOnClickListener(helpListener);
button2.setOnClickListener(helpListener);
label.setOnClickListener(helpListener);
button1.setOnClickListener(helpListener);
注意: 在分离的类中定义侦听器有一个缺点,它不能直接访问类字段,因此你需要通过构造函数传递数据(上下文,视图),除非你将属性设置为 public 或定义 geters。