android - 如何在 SharedPreferences 更改时更新 PreferenceActivity 的内部值

标签 android preferences reset

我在 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/

相关文章:

sql - Eclipse SQL Explorer 插件在哪里存储其首选项?

android - 如何将 OnClickListener 附加到自定义首选项布局中的按钮?

java - 程序期间重置全局字符数组的值

jquery - 通过单击按钮将 jquery 可拖动对象重置到原始位置

android - 如何使用按钮单击 Android 将语音短信发送到另一个联系人号码

android - 在创建位图时抛出 OutOfMemoryError

安卓 : Save fragment state and restore the view values

Android 调试 - 如何将 UI 线程异常/错误分类显示为对话框

android - 拖放首选项(项目重新排序)

ruby-on-rails - 如何重置我的 Git/Rails 3.1 项目中的所有 Heroku