Android Studio - 共享偏好无法保存在新活动中

Posted

技术标签:

【中文标题】Android Studio - 共享偏好无法保存在新活动中【英文标题】:Android Studio - The shared perference can't be saved on the new activity 【发布时间】:2021-09-15 14:11:41 【问题描述】:

正如问题所建议的,共享偏好无法保存在新活动中

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(); 方法之后。但是,它被刷新到保存的参考只有在之前的主要活动中添加了项目。

我已经搜索了半个小时,但我只找到关于“无法保存偏好”而不是“无法保存偏好仅在新活动中”的问题

我想知道我的代码中是否有任何错误,任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

为了让您的偏好在全球范围内可用,我建议做一个 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 中的数据作为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

【讨论】:

以上是关于Android Studio - 共享偏好无法保存在新活动中的主要内容,如果未能解决你的问题,请参考以下文章

关闭xamarin后保存android应用字符串值

android studio:需要加载随机图像和顶部随机文本,然后将它们保存为 jpeg 以与其他应用程序共享

在共享首选项android中保存模型类的ArrayList<ModelClass>

Android M 奇怪的共享偏好问题

共享偏好 Swift 4- iOS- 唯一 Alamofire 用户 ID

无法在Android Studio AVD Manager中启用“快照”并保存