2
後onSharedPreferenceChanged不叫我有一個MultiSelectListPreference在我的首選項文件:MultiSelectListPreference首次
<PreferenceCategory android:title="TYPES" >
<MultiSelectListPreference
android:defaultValue="@array/empty_array"
android:entries="@array/types"
android:entryValues="@array/typeValues"
android:key="types"
android:title="Types" />
</PreferenceCategory>
然後在代碼:
public class PublicPreferencesActivity extends PreferenceActivity implements OnSharedPreferenceChangeListener {
PublicPreferenceFragment preference = new PublicPreferenceFragment();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getFragmentManager().beginTransaction().replace(android.R.id.content, preference).commit();
}
public class PublicPreferenceFragment extends PreferenceFragment {
@Override
public void onCreate(final Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.publicpreferences);
for (int i = 0; i < getPreferenceScreen().getPreferenceCount(); i++) {
initSummary(getPreferenceScreen().getPreference(i));
}
}
}
@Override
protected void onResume() {
super.onResume();
// Set up a listener whenever a key changes
preference.getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}
@Override
protected void onPause() {
super.onPause();
preference.getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
// do something
// this does not get called all the time for MultiSelectListPreference
}
}
找遍四周,似乎其他人有這個問題,但沒有提供解決方法。
我在這裏看到了一條評論,可能在SDK 18中存在一個錯誤,直到API 18,但無法在任何地方確認,也沒有解決方法。 Android MultiSelectListPreference uncheck does not fire SharedPreferenceChanged
那麼這是一個錯誤?有沒有解決方法?
看起來像一個很大的錯誤,所以我覺得我做錯了事情。
這不起作用有用。正確的解決方案在這裏http://stackoverflow.com/a/22804325/398348 – likejiujitsu