为什么 getBoolean 总是 return 默认值?

Why does the getBoolean always return default?

我正在使用 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" 事件上对其进行测试(我正在使用 toasts 进行测试)

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 存储值时它显示默认值。

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

(使用 API15)

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

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

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