gpt4 book ai didi

android - 刷新 android PreferenceFragment

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:38:23 26 4
gpt4 key购买 nike

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

基本上一切正常,但我在刷新 UI 时遇到了问题。事实上,即使我在打开 Play Store 之前将首选项设置为 false,当用户回来时,该框也会被选中( fragment 刚刚暂停并恢复,因此首选项值被忽略)。

有没有办法“刷新” Activity 或 fragment ?

最佳答案

让您的 PreferenceFragment 实现 OnSharedPreferenceChangeListener界面。

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 示例中的代码 fragment ,用于强制复选框首选项的值。

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

关于android - 刷新 android PreferenceFragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11903346/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com