Android onSharedPreferenceChanged始终未触发

Android onSharedPreferenceChanged始终未触发,android,sharedpreferences,multiselectlistpreference,Android,Sharedpreferences,Multiselectlistpreference,我对这种方法有一个奇怪的问题。当我编辑EditTextPreference时,仅当我更改值时,才会调用它,而在MultiSelectListPreference上,仅当我第一次更改时才会调用它。 这是我的片段代码 public class PrefFragment extends PreferenceFragment implements OnSharedPreferenceChangeListener { @Override public void onCreate(Bundl

我对这种方法有一个奇怪的问题。当我编辑EditTextPreference时,仅当我更改值时,才会调用它,而在MultiSelectListPreference上,仅当我第一次更改时才会调用它。 这是我的片段代码

public class PrefFragment extends PreferenceFragment implements OnSharedPreferenceChangeListener {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setRetainInstance(true);
        addPreferencesFromResource(R.xml.my_preferences);
    }

    @Override
    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
        // DO STUFF
    }

    @Override
    public boolean onPreferenceTreeClick(final PreferenceScreen preferenceScreen, final Preference preference) {
        // TODO Auto-generated method stub
        super.onPreferenceTreeClick(preferenceScreen, preference);
        // DO STUFF

    }

    @Override
    public void onResume() {
        super.onResume();
        // Set up a listener whenever a key changes
        getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
    }

    @Override
    public void onPause() {
        super.onPause();
        // Unregister the listener whenever a key changes
        getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
    }
}
这是我的_preferences.xml文件



可能是因为调用了onPause()回调,而调用了unregisterOnSharedPreferenceChangeListener


将日志放在Resume()和onPause()两个方法上,以确保单击时,取消注册方法未运行。

取消注册共享首选项更改侦听器
onPause()
onStop()
找到解决方案了吗。。。我没有使用MultiSelectListPreference,而是使用了带有复选框Preference的PreferenceScreen。

<PreferenceCategory android:title="Title1" >
    <EditTextPreference
        android:dialogMessage="@string/pref_pers_1_msg"
        android:dialogTitle="@string/pref_pers_1"
        android:key="@string/pref_pers_1_key"
        android:title="@string/pref_pers_1" />        
   <EditTextPreference
        android:dialogMessage="@string/pref_pers_2_msg"
        android:dialogTitle="@string/pref_pers_2"
        android:key="@string/pref_pers_2_key"
        android:title="@string/pref_pers_2" />        
   <EditTextPreference
        android:dialogMessage="@string/pref_pers_3_msg"
        android:dialogTitle="@string/pref_pers_3"
        android:key="@string/pref_pers_3_key"
        android:title="@string/pref_pers_3" />
</PreferenceCategory>
<PreferenceCategory android:title="Title2" >
     <MultiSelectListPreference
        android:dialogTitle="title_dialog"
        android:entries="@array/array"
        android:entryValues="@array/array_elements"
        android:key="pref_pers_4"
        android:title="Title2" />
</PreferenceCategory>