我从xml:
中夸大了PreferemceActivity<PreferenceScreen
android:title="Appearence"
android:key="AppearencePref" >
......
<PreferenceCategory
android:title="Show Contact Photos">
<CheckBoxPreference
android:title="Show Contact Photos"
android:summary="@string/show_contact_photos_preference"
android:defaultValue="true"
android:key="ShowContactPhotosCheckBoxPref_Appendix" />
</PreferenceCategory>
........
</PreferenceScreen>
.......
<PreferenceScreen
android:title="Contact Options"
android:key="ContactOtionsPref">
<PreferenceCategory
android:title="Show Contact Photos">
<CheckBoxPreference
android:title="Show Contact Photos"
android:defaultValue="true"
android:key="ShowContactPhotosCheckBoxPref" />
</PreferenceCategory>
......
</PreferenceScreen>
其中一个首选项(复选框)更改其他复选框的状态:
if("ShowContactPhotosCheckBoxPref_Appendix".equals(key)){
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mContext);
boolean isChecked = prefs.getBoolean("ShowContactPhotosCheckBoxPref_Appendix", false);
Editor editor = PreferenceManager.getDefaultSharedPreferences(mContext).edit();
editor.putBoolean("ShowContactPhotosCheckBoxPref", isChecked);
editor.commit();
}
但是当我使用ShowContactPhotosCheckBoxPref进入屏幕时,它仍然保持先前的偏好值... 因此,如果我点击ShowContactPhotosCheckBoxPref_Appendix - 他的状态现在未经检查,然后使用ShowContactPhotosCheckBoxPref进入屏幕 - 他的状态仍然检查,但SharedPreferences中的值为false ...
如何告诉PreferenceActivity刷新其值?
答案 0 :(得分:1)
解决方案位于ApiDemos AdvancedPreferences.java:
private CheckBoxPreference mCheckBoxPreference;
mCheckBoxPreference = (CheckBoxPreference)getPreferenceScreen().findPreference(
KEY_ADVANCED_CHECKBOX_PREFERENCE);
if (mCheckBoxPreference != null) {
mCheckBoxPreference.setChecked(!mCheckBoxPreference.isChecked());
}
答案 1 :(得分:0)
您没有更改代码中的值。它应该是:
editor.putBoolean("ShowContactPhotosCheckBoxPref", !isChecked);
注意!