SharedPreferences不返回默认值

时间:2019-07-18 18:11:31

标签: java android

我有一个共享的首选项,并且已经创建了一个方法来检查它是否是用户在应用程序中的第一次。但是它总是返回与默认值相反的值。

我的代码:

public static Boolean getFirstOnApp(Context context) {
    SharedPreferences pref =  context.getSharedPreferences(LOGIN_PREFS_NAME, Context.MODE_PRIVATE);
    return pref.getBoolean(KEY_FIRST_TIME_ON_APP, true);
}

总是返回false

我在控制器上调用它:

 if (SaveSharedPreferences.getFirstOnApp(context)) {
            fabAtivaMapeamento.performClick();
            SaveSharedPreferences.setFirstOnApp(context, false);
        }

SaveSharedPreferences.setFirstOnApp(context, false);从未被调用过。仅在此If

中更改

我已经卸载了该应用程序,强制其停止运行,清除了数据并缓存了。

如何解决?

2 个答案:

答案 0 :(得分:1)

编辑-检查以下各项是否可行。

public static Boolean getFirstOnApp(Context context) {
    SharedPreferences pref =  context.getSharedPreferences(LOGIN_PREFS_NAME, Context.MODE_PRIVATE);
    //Check if the shared preference key exists.
    //This way, you can determine if the fault is here or elsewhere.
    if (pref.contains(KEY_FIRST_TIME_ON_APP)) {
        return pref.getBoolean(KEY_FIRST_TIME_ON_APP, true);
    } else {
        return true;
    }
}


检查是否已将应用程序设置为允许在清单android:allowBackup="true"中进行备份。 将其设置为false,卸载并重新安装该应用程序。

android:allowBackup=“false”

如果无法解决问题,请尝试在清单中设置以下内容,卸载应用程序,然后重新安装。

android:fullBackupContent="false"

答案 1 :(得分:1)

像这样使用来检查它是否是第一次

SharedPreferences pref = getSharedPreferences(LOGIN_PREFS_NAME, Context.MODE_PRIVATE);
        if (pref.getBoolean(KEY_FIRST_TIME_ON_APP, false)) {

           //in here it's not for first time

        } else {

             //in here it's first time
        }