我可以将侦听器生产线分成较小的部分吗?

这是我的代码:

protected void onCreate(Bundle savedInstanceState) {
   Preference button = (Preference)getPreferenceManager().findPreference("exitlink");

      button.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
             @Override
             public boolean onPreferenceClick(Preference arg0) {
                finish();
                return true;
             }
        });


我希望这看起来像:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Preference button = (Preference)getPreferenceManager().findPreference("exitlink");
    if(button != null) {
         button.setOnPreferenceClickListener(onPreferenceClick);
    }
}

public boolean onPreferenceClick(Preference arg0) {
    finish();
    return true;
}

最佳答案

您上面的代码几乎已经可以使用了。使用上面的代码进行此微小更改:

button.setOnPreferenceClickListener(this);


然后,您只需让您的类实现所需的特定接口即可,在本例中为Preference.OnPreferenceClickListener

除了dmon在下面关于为此使用变量的建议外,还可以编写一个返回侦听器的函数,当您希望具有类似的侦听器但稍有变化时,该函数非常有用,例如下面的示例。

private Preference.OnPreferenceClickListener getListener(int listenerId) {
    return new Preference.OnPreferenceClickListener() {
         @Override
         public boolean onPreferenceClick(Preference arg0) {
            Log.i("MyTag", "Listener " + listenerId + " invoked!");
            finish();
            return true;
         }
    };
}

07-27 13:23