android - Shared Pref 在某些高端设备(如三星)中返回错误值

标签 android android-sharedpreferences

下面是我创建共享首选项的代码

public SaveData(Context con) {
    this.context = con;
    emailSharedPreferences = context.getSharedPreferences(KEY_PREF_EMAIL, Context.MODE_PRIVATE);
    emailEdit = emailSharedPreferences.edit();
}

对于集合数据

public void setData(boolean accepted) {
    emailEdit = emailSharedPreferences.edit();
    emailEdit.putBoolean(KEY, accepted);
    emailEdit.apply();
}

获取数据

public Boolean getData() {
    emailSharedPreferences = context.getSharedPreferences(KEY_PREF_EMAIL, Context.MODE_PRIVATE);
    return emailSharedPreferences.getBoolean(KEY, false);
}

在我的应用程序启动器屏幕上,当我尝试获取数据时,它在某些设备上返回“true”。

现在如果我已经通过下面的代码创建了共享首选项

 private static SharedPreferences getPreferences(Context context) {
   // return context.getSharedPreferences(PREF_NAME, MODE);
    return  PreferenceManager.getDefaultSharedPreferences(context);

}

private static SharedPreferences.Editor getEditor(Context context) {
    return getPreferences(context).edit();
}

对于集合数据

public static void setData(Context context,boolean value){
    try {
        getEditor(context).putBoolean(KEY, value).commit();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

获取数据

 public static boolean getData(Context context){
    try {
        return getPreferences(context).getBoolean(KEY, false);
    } catch (Exception e) {
        e.printStackTrace();
        return false;
    }
}

现在它在所有设备上都运行良好。 有人可以解释为什么会这样。

最佳答案

使用这个

emailEdit.commit();

在此之后

emailEdit.putBoolean(KEY, accepted);

关于android - Shared Pref 在某些高端设备(如三星)中返回错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42360814/

相关文章:

安卓计费 : How to handle pending purchases

Android 设备是否经过硬件加密?以编程方式

android - 将本地 .aar 文件添加到我的 gradle 构建中

android - 如何知道在jetpack compose的惰性行的视口(viewport)中完全可见的项目?

android - 如何检测 ImageView 上的手势?

android - 无法立即从共享首选项中获取值(value)

java - SharedPreferences 不会发送位图 : Failed to allocate memory

Android 偏好添加不需要的字符

java - 如何让自定义适配器中的 sharedpreferences 获取我的 ArrayList 的最新值?

android - 允许用户每 5 分钟最多发送 20 条评论?