猿问

能将一个java监听器分离成给他自己的函数么?

  • 我能将set-listener那一行分成小行么?
    这是我现在的代码:

    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;
    }



holdtom
浏览 499回答 2
2回答

守着星空守着你

上边的你的代码基本是可以的。给你上边的代码做个小改动:button.setOnPreferenceClickListener(this);然后按照需求,让你的类实现特定的接口,在这种情况下 Preference.OnPreferenceClickListener.可以写一个函数,这个函数返回一个监听器,当你想要写类似的监听器但是需要一些变化的时候非常有用,就像下边这样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;          }     }; }

函数式编程

你可以在你的方法外创建一个变量:private Preference.OnPreferenceClickListener listener = new Preference.OnPreferenceClickListener() {      @Override      public boolean onPreferenceClick(Preference arg0) {         finish();            return true;      } };然后用它作为一个变量:setListener(listener). 这个可以让你再你的activity中有多个相同的监听器类
随时随地看视频慕课网APP

相关分类

Java
我要回答