我正在尝试从 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。谢谢大家。
答案 0 :(得分:7)
mIsPremium = pref.getBoolean("PREMIUM", false);
不是("PRIVATE",false)
您使用的是不同的密钥,需要匹配。
答案 1 :(得分:2)
SharedPrefernces保存在key:value对中,您将值放在“PREMIUM”中并将其视为“PRIVATE”
答案 2 :(得分:1)
您更改了“PREMIUM”和“PRIVATE”键。使用硬编码字符串通常是一种糟糕的编程习惯。我建议使用最终的静态变量。