2016-05-12 96 views
0

我一直在我的應用程序中使用SharedPreferences很長一段時間,但最近它似乎不再存儲。我不確定是否所有偏好都是這樣,但我知道至少它是用於記住Login和tutorialMode。 下面是我使用這些偏好的一些代碼片段。Sharedpreferences沒有保存(不再)

rememberLogin(套):

SharedPreferences sharedPref2 = getSharedPreferences(getString(R.string.rememberLogin), Context.MODE_PRIVATE); 
SharedPreferences.Editor editor2 = sharedPref2.edit(); 
editor2.putBoolean(getString(R.string.rememberLogin), ((CheckBox) findViewById(R.id.cbRemember)).isChecked()); 
editor2.apply(); 

rememberLogin(獲得):

SharedPreferences sharedPref3 = getSharedPreferences(getString(R.string.rememberLogin), Context.MODE_PRIVATE); 
boolean rememberLogin = sharedPref3.getBoolean(getString(R.string.rememberLogin), true); 

tutorialMode(套):

SharedPreferences.Editor editor = getSharedPreferences(getString(R.string.tutorialMode), Context.MODE_PRIVATE).edit(); 
editor.putBoolean(getString(R.string.tutorialMode), false); 
editor.apply(); 

tutorialMode(獲得):

SharedPreferences sharedPref = getSharedPreferences(getString(R.string.tutorialMode), Context.MODE_PRIVATE); 
Intent intent; 
if (sharedPref.getBoolean(getString(R.string.tutorialMode), true)) { 
    intent = new Intent(LoadActivity.this, IntroActivity.class); 
} else { 
    intent = new Intent(LoadActivity.this, MainActivity.class); 
} 
startActivity(intent); 
strings.xml中的210

部分(這裏我把我的SharedPreferences):

<!-- Shared Preferences --> 
<string name="apiKey" translatable="false" /> 
<string name="expirationTime" translatable="false">7</string> 
<string name="rememberLogin" translatable="false">true</string> 
<string name="user_id" translatable="false">0</string> 
<string name="flashMode" translatable="false">off</string> 
<string name="flashMode2" translatable="false">off</string> 
<string name="connType" translatable="false">0</string> 
<string name="notified" translatable="false">false</string> 
<string name="tutorialMode" translatable="false">true</string> 

當我做(在設置)的變化,他們似乎是相同的(在GET)前。

+4

'不工作'意味着什麼都沒有具體真的 –

+0

@MarcinOrlowski好點,我編輯了我的文章,我遇到的具體問題是偏好似乎不再保存 –

+0

這是一個附註,爲什麼要創建多個共享偏好文件並在每個文件1鍵中創建?你必須創建一個文件,並保存所有的密鑰,我說的是在調用'getSharedPreferences(getString(R.string.tutorialMode)...時使用不同的名稱....' – Yazan

回答

0

我已經找到了問題:

我認爲我需要把喜好在strings.xml檔案值的默認值,但事實並非如此。所以,我的文件是這樣的:

<!-- Shared Preferences --> 
<string name="apiKey" translatable="false" /> 
<string name="expirationTime" translatable="false">7</string> 
<string name="rememberLogin" translatable="false">true</string> 
<string name="user_id" translatable="false">0</string> 
<string name="flashMode" translatable="false">off</string> 
<string name="flashMode2" translatable="false">off</string> 
<string name="connType" translatable="false">0</string> 
<string name="notified" translatable="false">false</string> 
<string name="tutorialMode" translatable="false">true</string> 

雖然它應該是這樣的:

<!-- Shared Preferences --> 
<string name="apiKey" translatable="false">apiKey</string> 
<string name="expirationTime" translatable="false">experationTime</string> 
<string name="rememberLogin" translatable="false">rememberLogin</string> 
<string name="user_id" translatable="false">user_id</string> 
<string name="flashMode" translatable="false">flashMode</string> 
<string name="flashMode2" translatable="false">flashMode2</string> 
<string name="connType" translatable="false">connType</string> 
<string name="notified" translatable="false">notified</string> 
<string name="tutorialMode" translatable="false">tutorialMode</string> 

此外,作爲Yavan指出,我有不同的文件名每個我的喜好的,這是因爲我認爲getSharedPreferencesMethod中的名稱引用了首選項的名稱而不是文件的名稱,所以我現在也更改了它。