【发布时间】:2011-09-11 17:17:37
【问题描述】:
我有一个“活动 a”,它从 SharedPreferences 读取一些值并将它们显示在 TextView 中,然后我调用“活动 b”,其中来自 SharedPreferences 的值得到更新并写回 @ 987654324@。最后,我通过按返回按钮返回“活动 a”,现在应该从 SharedPreferences 读取新的(更新的)值并显示在 TextView 中。但是问题来了,刚刚从SharedPreferences读取的值仍然没有更新(不是活动b设置的新值)(从logcat输出中得到),这是怎么回事? SharedPrefs 需要手动刷新吗?
如果我重新启动“活动 a”,一切都会正常工作,并且新值会正确显示。怎么了?
我调用该方法在“活动 a”中读取并显示来自 onResume() 的值。
我还尝试重新实例化 SharedPrefs-Object(使用 getSharedPreferences()),但也无济于事。
提前致谢!
【问题讨论】:
-
是的,它肯定是写入SharedPref,因为新的值会显示出来,但只有在Activity/App重启之后。
-
hmmm getSharedPreferences() 仅在 onCreate registerOnSharedPreferenceChangeListener 和 onDestroy 中取消注册并在 Listener 中进行更改?
-
你在onRestart方法中写过吗...如果是的话希望它可以工作...
-
嗯,我发现,如果我在活动 B 中从 onBackPressed() 而不是 onDestroy() 提交对 SharedPrefs 的更改,它就可以正常工作!
标签: android android-activity sharedpreferences onresume