定义外部监听器

我应该什么时候使用它

  • 当内联侦听器中的代码太大而你的方法/类变得丑陋且难以阅读时
  • 你希望在应用的各种元素(视图)中执行相同的操作

要实现此目的,你需要创建一个实现 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。