java - Android Studio - 共享偏好无法保存在新活动中
问题描述
正如问题所建议的那样,共享偏好无法保存在新活动中
Set<String> temp = getSharedPreferences("pref", MODE_PRIVATE).getStringSet("attempt", null);
temp.add("one item");
SharedPreferences editor = getSharedPreferences("pref", MODE_PRIVATE);
editor.edit().putStringSet("attempt", temp).commit();
此代码在主要活动上完美运行。但是,当我尝试将此代码放在另一个活动上时,它不起作用。
destroy();
即使在新活动的方法之后,也可以在此代码之后查看编辑的首选项。但是,它仅在之前在主要活动中添加的项目被刷新到保存的参考。
我已经搜索了半个小时,但我只找到关于“无法保存偏好”而不是“只能在新活动中保存偏好”的问题
我想知道我的代码是否有任何错误,任何帮助将不胜感激。
解决方案
为了使您的偏好全球可用,我建议做一SharedPrefs.java
堂课来保存您SharedPreferences
这样的:
public class SharedPrefs {
public static SharedPreferences prefs(Context context){
return PreferenceManager.getDefaultSharedPreferences(context);
}
//Set your preference
public static void setMyPreference(Context context, String text) {
prefs(context).edit().putString("MyPreference", text).apply();
}
//Get your preference
public static String getMyPreference(Context context) {
return prefs(context).getString("MyPreference", "DefaultText");
}
使用以下代码,您可以将数据从您的Activity
as保存SharedPreference
到您的SharedPrefs.java
类中:
//To save preferences in SharedPrefs
String myString = "Hello world";
SharedPrefs.setMyPreference(getContext(),myString);
或将其从SharedPrefs.java
您的Activity
:
//To get preferences from SharedPrefs
String getMyPreference = SharedPrefs.getCustomString(getContext());
System.out.println(getCustomString);
//Result = Hello world
推荐阅读
- javascript - 为什么我不能在 JS 中删除全局变量?
- capacitor - 在 Capacitor v3 中使用离子电容器 Angular 实现条带支付
- flutter - 如何在颤动中制作安全的 key.properties 文件
- javascript - GA 事件跟踪 - 代码未触发
- c# - 剃刀页面,将所有复选框作为值列表返回
- pytorch - “RuntimeError: PyTorch convert function for op 'pythonop' not implemented” AND “Python builtin 目前在 Torchscript 中不受支持”
- javascript - Twitch Embedded Clips 错误 - 拒绝连接
- python - 如何使用 python 测试资源管理器在 VS 代码中运行特定测试
- wiremock - 有没有办法手动处理wiremock场景?
- iterm2 - 在 iterm 中如何显示命令的开始时间