2017-08-07 99 views
0

我正在尝试创建一个MultiSelectPreference。但是,单击列表中的某个项目时,列表从不接收回叫监听器。MultiPrelectPreference onPreferenceChange回调监听器不被调用

XML代码:

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layoutDirection="locale"> 

    <PreferenceCategory android:title="@string/preference_display_category"> 

     <MultiSelectListPreference 
      android:key="preference_filter_entries" 
      android:summary="@string/preference_filter_entries_summary" 
      android:title="@string/preference_filter_entries_title" 
      android:entries="@array/preference_entry_array" 
      android:entryValues="@array/preference_filter_entries_array_values" 
      android:dialogTitle="@string/preference_filter_entries_dialog_title"/> 

    </PreferenceCategory> 

</PreferenceScreen> 

Java代码:

MultiSelectListPreference multiSelectListPreference; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     addPreferencesFromResource(R.xml.fragment_preferences); 
     getActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 

     multiSelectListPreference = (MultiSelectListPreference) findPreference("preference_filter_entries"); 

     multiSelectListPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { 
      @Override 
      public boolean onPreferenceChange(Preference preference, Object newValue) { 
Timber.d("onPreferenceChange called %s", "1"); 
       return false; 
      } 
     }); 
    } 

以上原木从该表中的任何项目检查时,从来没有被称为!

回答

0
如下

改变返回到true

multiSelectListPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { 
      @Override 
      public boolean onPreferenceChange(Preference preference, Object newValue) { 
Timber.d("onPreferenceChange called %s", "1"); 
       return true; 
      } 
     });