Android SharedPreferences布尔无法正常工作

时间:2013-07-05 10:48:24

标签: android boolean sharedpreferences

我正在尝试从 SharedPreferences 中获取布尔 true ,但我得到 false 每次都有价值。 名为“MyPref”的SharedPreferences文件包含以下代码:

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<boolean name="PREMIUM" value="true" />
</map>

我正在使用以下代码向 MyActivity.class 中的SharedPreferences添加值:

SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", 1); // 0 - for private mode
Editor editor = pref.edit();
editor.putBoolean("PREMIUM", true); // Storing boolean - true/false
editor.commit(); // commit changes
Log.d(TAG, "User is " + (mIsPremium ? "PREMIUM" : "NOT PREMIUM"));

使用以下方法在多个班级上检索

boolean mIsPremium = false;
SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", 1); // 0 - for private mode
mIsPremium = pref.getBoolean("PRIVATE", false); // getting boolean
Log.d("IS PREMIUM", String.valueOf(mIsPremium));
if(mIsPremium) {
    // PREMIUM USER - NO ADS
} else {
    // NOT PREMIUM USER - SHOW ADS
}

我总是将高级的值变为 false ,这可能是导致这种情况发生的原因以及如何解决这个问题?我正在使用android 4.2.2。谢谢大家。

3 个答案:

答案 0 :(得分:7)

mIsPremium = pref.getBoolean("PREMIUM", false); 

不是("PRIVATE",false)

您使用的是不同的密钥,需要匹配。

答案 1 :(得分:2)

SharedPrefernces保存在key:value对中,您将值放在“PREMIUM”中并将其视为“PRIVATE”

答案 2 :(得分:1)

您更改了“PREMIUM”和“PRIVATE”键。使用硬编码字符串通常是一种糟糕的编程习惯。我建议使用最终的静态变量。