我正在使用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存储的值时,它会显示默认值。
有人知道这里发生了什么吗?谢谢!
(使用API15)
答案 0 :(得分:1)
将值放入编辑器后,必须通过调用commit()
或apply()
方法确认操作:
editor.commit();
//or
editor.apply();
否则您的操作将无法验证,并且不会保存该值。