共享偏好不再保存(不再)

时间:2016-05-12 13:48:59

标签: java android sharedpreferences

我已经在我的应用程序中使用SharedPreferences很长一段时间但最近它似乎不再保存了。我不确定是否所有首选项都是如此,但我知道至少它是为了rememberLogin和tutorialMode。 以下是我使用这些首选项的一些代码。

rememberLogin(set):

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(get):

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

tutorialMode(set):

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

tutorialMode(get):

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的一部分(我保留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>

当我进行更改(在集合中)时,它们似乎与之前相同(在获取中)。

1 个答案:

答案 0 :(得分: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中的名称是指首选项的名称而不是文件名,所以我'我现在也改变了。