2016-05-12 83 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中的名称引用了首选项的名称而不是文件的名称,所以我现在也更改了它。