【发布时间】:2014-04-18 18:44:51
【问题描述】:
我的首选项文件中有一个 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
}
}
我四处搜索,似乎其他人也遇到了这个问题,但没有提供解决方法。
我在这里看到了一条评论,说直到 API 18 的 SDK 中可能存在错误,但无法在任何地方确认,并且再次没有解决方法。 Android MultiSelectListPreference uncheck does not fire SharedPreferenceChanged
所以这是一个错误吗?有解决办法吗?
似乎是一个相当大的错误,所以我觉得我做错了什么导致了这个。
【问题讨论】:
标签: android settings sharedpreferences