为什么getBoolean总是返回默认值?

时间:2017-05-29 16:33:05

标签: android android-sharedpreferences

我正在使用SharedPreferences来存储多个复选框和一些字符串的值,并且它运行良好。当我尝试使用它来存储交换机的值时,它不起作用,并继续获取默认值。

我像这样初始化

SharedPreferences.Editor editor;
SharedPreferences prefs;

我把它放在“onCreate”

editor = getSharedPreferences(FirstStart.MY_PREFS_NAME, MODE_PRIVATE).edit();
prefs = getSharedPreferences(FirstStart.MY_PREFS_NAME, MODE_PRIVATE);

然后我在交换机的“onClick”事件上测试它(我正在使用toast进行测试)

public void clickSwitchAlarm(View view) {
    editor.putBoolean("swAlarma", swAlarm.isChecked());
    Toast.makeText(MainMenu.this, "isChecked() value: " + swAlarm.isChecked(), Toast.LENGTH_SHORT).show();
    //Toast.makeText(MainMenu.this, "getBoolean value: " + prefs.getBoolean("swAlarma", false), Toast.LENGTH_SHORT).show();
}

当我检查“isChecked()”值时,它可以正常工作,但是当我检查SharedPreferences存储的值时,它会显示默认值。

有人知道这里发生了什么吗?谢谢!

(使用API​​15)

1 个答案:

答案 0 :(得分:1)

将值放入编辑器后,必须通过调用commit()apply()方法确认操作:

editor.commit();
//or
editor.apply();

否则您的操作将无法验证,并且不会保存该值。