刷新android首选项片段

刷新android首选项片段,android,android-fragments,android-preferences,Android,Android Fragments,Android Preferences,我在片段首选项中有一个复选框首选项。当用户激活复选框时,我会检查是否安装了应用程序,如果未安装,我会将首选项重置为false,然后打开Play Store下载应用程序 基本上所有的工作都很好,但是我有一个问题需要刷新UI。事实上,即使我在打开播放存储之前将首选项设置为false,当用户返回时,该框也会被选中(片段刚刚暂停并恢复,因此首选项值会被忽略) 有没有办法“刷新”活动或片段 让您的首选片段实现接口 在onCreate()中,您可以读取首选项值并相应地设置UI。例如: public void

我在
片段首选项
中有一个
复选框首选项
。当用户激活复选框时,我会检查是否安装了应用程序,如果未安装,我会将首选项重置为false,然后打开Play Store下载应用程序

基本上所有的工作都很好,但是我有一个问题需要刷新UI。事实上,即使我在打开播放存储之前将首选项设置为false,当用户返回时,该框也会被选中(片段刚刚暂停并恢复,因此首选项值会被忽略)


有没有办法“刷新”活动或片段

让您的首选片段实现接口

onCreate()
中,您可以读取首选项值并相应地设置UI。例如:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Load the preferences from an XML resource.
    addPreferencesFromResource(R.xml.shakesql_app_prefs);

    // Initialize pref summary label.

    // Get a reference to the application default shared preferences.
    SharedPreferences sp = getPreferenceScreen().getSharedPreferences();

    // Read the current preference value.
    String listVal =
            sp.getString(getString(R.string.preference_font_size_key),
                    getString(R.string.preference_font_size_default));

    // Look up the textual description corresponding to the
    // preference value and write it into the summary field.
    String listDesc = descriptionFromPref(
            listVal, 
            getResources().getStringArray(
                    R.array.preference_font_size_values), 
                    getResources().getStringArray(
                            R.array.preference_font_size_labels)
                    );
    if (!TextUtils.isEmpty(listDesc)) {
        ListPreference listPref =
                (ListPreference) findPreference(getString(R.string.preference_font_size_key));
        listPref.setSummary(listDesc);
    }
}
然后,在
onSharedPreferenceChanged()
中更新UI

public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
    Preference pref = findPreference(key);
    if (pref instanceof ListPreference) {
        // Update display title
        // Write the description for the newly selected preference 
        // in the summary field.
        ListPreference listPref = (ListPreference) pref;
        CharSequence listDesc = listPref.getEntry();
        if (!TextUtils.isEmpty(listDesc)) {
            pref.setSummary(listDesc);
        }
    }        
}
下面是API演示中AdvancedPreferences示例的代码片段,用于强制设置复选框首选项的值

// Toggle the value of mCheckBoxPreference.
if (mCheckBoxPreference != null) {
            mCheckBoxPreference.setChecked(!mCheckBoxPreference.isChecked());
}

谢谢你的回复。我也使用了
onSharedPreferenceChanged
,但是
SharedReferences.edit().putBoolean(“key”,false).commit()不刷新UI,这是我的问题。(例如,与
setSummary()
相反)。真可惜,我没有想到将
首选项
转换为
复选框首选项
。非常感谢您抽出时间。