Android 共享首选项未正确保存
Android Shared Preferences don't Save Properly
我正在尝试使用 Android 共享首选项来保存某些应用程序值
这是我的 onCreate 代码:
protected void onCreate(Bundle savedInstanceState) {
SharedPreferences preferences = getSharedPreferences("MyPref", MODE_PRIVATE);
boolean firstLaunch = preferences.getBoolean("firstlaunch", true);
System.out.println("FIRST LAUNCH? " + firstLaunch);
if(firstLaunch == true){
SharedPreferences.Editor editor = getSharedPreferences("MyPref", MODE_PRIVATE).edit();
editor.putString("language", "en");
editor.putInt("theme", R.style.Default);
editor.putBoolean("firstLaunch", false);
editor.commit();
System.out.println("FIRST LAUNCH:" + preferences.getBoolean("firstLaunch", true));
}
当我重新启动应用程序时,firstLaunch 仍然为真?这是为什么?
您遇到了案例问题。
firstlaunch
对比 firstLaunch
为避免此类问题,您应该使用静态成员。
private static final String KEY_PREFS_NAME = "myPrefs";
private static final String KEY_FIRST_LAUNCH = "firstLaunch";
protected void onCreate(Bundle savedInstanceState) {
SharedPreferences preferences = getSharedPreferences(KEY_PREFS_NAME, MODE_PRIVATE);
boolean firstLaunch = preferences.getBoolean(KEY_FIRST_LAUNCH, true);
System.out.println("FIRST LAUNCH? " + firstLaunch);
if(firstLaunch == true){
SharedPreferences.Editor editor = getSharedPreferences(KEY_PREFS_NAME, MODE_PRIVATE).edit();
editor.putString("language", "en");
editor.putInt("theme", R.style.Default);
editor.putBoolean(KEY_FIRST_LAUNCH, false);
editor.commit();
System.out.println("FIRST LAUNCH:" + preferences.getBoolean(KEY_FIRST_LAUNCH, true));
}
检索时您的密钥值拼写不正确,因此您总是会得到 true
更改并提交错误的密钥。
改变
boolean firstLaunch = preferences.getBoolean("firstlaunch", true);
至
boolean firstLaunch = preferences.getBoolean("firstLaunch", true);
我正在尝试使用 Android 共享首选项来保存某些应用程序值 这是我的 onCreate 代码:
protected void onCreate(Bundle savedInstanceState) {
SharedPreferences preferences = getSharedPreferences("MyPref", MODE_PRIVATE);
boolean firstLaunch = preferences.getBoolean("firstlaunch", true);
System.out.println("FIRST LAUNCH? " + firstLaunch);
if(firstLaunch == true){
SharedPreferences.Editor editor = getSharedPreferences("MyPref", MODE_PRIVATE).edit();
editor.putString("language", "en");
editor.putInt("theme", R.style.Default);
editor.putBoolean("firstLaunch", false);
editor.commit();
System.out.println("FIRST LAUNCH:" + preferences.getBoolean("firstLaunch", true));
}
当我重新启动应用程序时,firstLaunch 仍然为真?这是为什么?
您遇到了案例问题。
firstlaunch
对比 firstLaunch
为避免此类问题,您应该使用静态成员。
private static final String KEY_PREFS_NAME = "myPrefs";
private static final String KEY_FIRST_LAUNCH = "firstLaunch";
protected void onCreate(Bundle savedInstanceState) {
SharedPreferences preferences = getSharedPreferences(KEY_PREFS_NAME, MODE_PRIVATE);
boolean firstLaunch = preferences.getBoolean(KEY_FIRST_LAUNCH, true);
System.out.println("FIRST LAUNCH? " + firstLaunch);
if(firstLaunch == true){
SharedPreferences.Editor editor = getSharedPreferences(KEY_PREFS_NAME, MODE_PRIVATE).edit();
editor.putString("language", "en");
editor.putInt("theme", R.style.Default);
editor.putBoolean(KEY_FIRST_LAUNCH, false);
editor.commit();
System.out.println("FIRST LAUNCH:" + preferences.getBoolean(KEY_FIRST_LAUNCH, true));
}
检索时您的密钥值拼写不正确,因此您总是会得到 true
更改并提交错误的密钥。
改变
boolean firstLaunch = preferences.getBoolean("firstlaunch", true);
至
boolean firstLaunch = preferences.getBoolean("firstLaunch", true);