2013-07-05 138 views
1

我試圖從SharedPreferences真正得到布爾值,但每次我得到一個值。 名爲 「MyPref」 的SharedPreferences文件包含以下代碼:Android的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 
} 

我總是得到的的價值溢價,可能是什麼原因,要做到這一點,如何解決呢?我正在使用android 4.2.2。謝謝你們。

+0

爲什麼你正在使用1作爲標誌。和不同的鍵來獲取和存儲布爾值? –

+1

關於商店溢價,但是當私下爲什麼? – Senthil

回答

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

("PRIVATE",false)

您正在使用不同的密鑰,他們需要相匹配。

+0

我一直在努力了很多,因爲我已經錯過了指向,基本...謝謝。 –

+0

它發生在每個人,尤其是上週五:)很高興能幫助你。 –

+0

你做的,我等待一分鐘,以紀念你的答案和正確的:) –

2

SharedPrefernces保存在鍵:值對,你是把在「溢價」的價值和retreiving爲「私有」

1

你改變鍵「溢價」和「私」。使用硬編碼字符串通常是一種糟糕的編程習慣。我會建議使用這些最終靜態變量。