我在 PreferenceActivity 中使用 Preference 来加载默认值:单击此特定 Preference 时,会发生如下情况:
private String mResetKeys = "key1,key2,key3";
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
SharedPreferences.Editor prefs_editor = prefs.edit();
for (String current_pref : mResetKeys.split(",")) {
prefs_editor.remove(current_pref);
}
prefs_editor.commit();
但是之后,其对应的 SharedPreference 被重置的 Preferences 仍然显示旧值 - 它似乎被缓存在 Preference 中。只有当我离开 PreferenceActivity 并重新打开它时,Preferences 才会显示新值。
如何以编程方式更新 PreferenceActivity?
最佳答案
我遇到了类似的问题。这可能不是最正确 的修复,但它对我的目的有用。在完成提交后,我立即调用了 Activity.recreate();
方法。
Activity 将重新启动(onDestroy()
/onCreate()
/etc)但出于我的目的,我所需要的只是对一个偏好的特殊处理。我用 OnPreferenceClickListener
听取了某种偏好,并制作了一个警告对话框,其中包含一种警告消息和一个改变主意的选项。如果他们确实想改变主意,我会向首选项 Activity 提交新值,然后调用 recreate()
以便更新复选框首选项。
但是,我也对无需重新创建 Activity 即可执行此操作的方法感兴趣...
关于android - 如何在 SharedPreferences 更改时更新 PreferenceActivity 的内部值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6877704/