开发者

PreferenceActivity Refresh Problem

I have PreferemceActivity inflated from xml:

<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>

One of the preferences(checkbox) change state of other checkbox:

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();            
        }

But when I go to screen with ShowContactPhotosCheckBoxPref it still hold previous preference value... So if I click on ShowContactPhotosCheckBoxPref_Appendix - his state is now unchecked and then go to screen with ShowContactPhotosCheckBoxPref - his state still checked, but value in SharedPreferences is false...

How can I tell PreferenceActivity to refresh its value?


Solution is in ApiDemos AdvancedPreferences.java:

private CheckBoxPreference mCheckBoxPreference;

mCheckBoxPreference = (CheckBoxPreference)getPreferenceScreen().findPreference(
        KEY_ADVANCED_CHECKBOX_PREFERENCE);

if (mCheckBoxPreference != null) {
    mCheckBoxPreference.setChecked(!mCheckBoxPreference.isChecked());
}


You are not changing the value in your code. It should be:

editor.putBoolean("ShowContactPhotosCheckBoxPref", !isChecked);

Notice the !

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜