首页 > 解决方案 > 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();即使在新活动的方法之后,也可以在此代码之后查看编辑的首选项。但是,它仅在之前在主要活动中添加的项目被刷新到保存的参考。

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

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

标签: javaandroidandroid-studioandroid-activitysharedpreferences

解决方案


为了使您的偏好全球可用,我建议做一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");
}

使用以下代码,您可以将数据从您的Activityas保存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

推荐阅读