PreferenceActivity刷新问题

时间:2011-04-13 08:55:15

标签: android preferenceactivity

我从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刷新其值?

2 个答案:

答案 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);

注意!