作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我是一名新的 Android 开发者,我的第一个应用程序即将完成。
在我的待办事项列表中,我最后要做的事情之一是 Tasker 集成。我的集成工作到了一定程度。
我的应用程序当前设置为作为插件工作并接受来自 tasker 的字符串并使用新字符串更新首选项。这是有效的。
问题是当我重新启动我的应用程序时,首选项的值没有更新。在我完全关闭应用程序并重新启动它之前,我无法获取要更新的首选项摘要。
所以问题是,我如何强制我的应用从应用的 onResume 中重新加载首选项,或者是否有更好的方法一起使用?
这是接收方更新偏好值的代码:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
String album_name = bundle.getString(PluginBundleManager.BUNDLE_EXTRA_STRING_MESSAGE);
prefs.edit().putString("text_default_album", StringUtil.sanitize(album_name)).commit();
Log.d(TAG, "fr: "+prefs.getString("text_default_album", ""));
这是 Activity 的 onResume 中的:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
String album_name = prefs.getString("text_default_album", "");
Log.d(TAG, "album_name: "+album_name);
final Preference album = getPreferenceScreen().findPreference("text_default_album");
album.setSummary(album_name);
接收方的 list 声明:
<receiver
android:name=".receivers.FireReceiver"
android:exported="true"
android:process=":background"
tools:ignore="ExportedReceiver" >
<!-- this Intent filter allows the plug-in to discovered by Locale -->
<intent-filter>
<action android:name="com.twofortyfouram.locale.intent.action.FIRE_SETTING" />
</intent-filter>
</receiver>
更新:对于可能遇到这个问题并正在努力弄清楚的人,一旦我删除了 AndroidManifest 中的 android:process=":background"
接收器的 .xml 声明。它现在按预期工作。
最佳答案
提交将新值保存在存储中,但不会更新内存中的值。如果你想要这个功能,你应该使用 apply。阅读更多 here和 here
所以你必须更换
prefs.edit().putString("text_default_album", StringUtil.sanitize(album_name)).commit();
与
prefs.edit().putString("text_default_album", StringUtil.sanitize(album_name)).apply();
希望这有助于...
关于Android更改首选项值并更新首选项屏幕中的显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17645024/
我是一名优秀的程序员,十分优秀!