为什么 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();
否则您的操作将不会被验证并且该值将不会被保存。
我正在使用 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();
否则您的操作将不会被验证并且该值将不会被保存。