我使用SharedPreferences來存儲多個複選框和一些字符串的值,並且它表現良好。當我嘗試使用它來存儲交換機的值時,它不起作用,並且保持默認值。爲什麼getBoolean總是返回默認值?
我初始化這樣
SharedPreferences.Editor editor;
SharedPreferences prefs;
我把這個「的onCreate」
editor = getSharedPreferences(FirstStart.MY_PREFS_NAME, MODE_PRIVATE).edit();
prefs = getSharedPreferences(FirstStart.MY_PREFS_NAME, MODE_PRIVATE);
然後我測試它的開關「的onClick」事件(我使用吐司去測試)
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存儲值它顯示了默認值。
有人知道這裏發生了什麼嗎?謝謝!
editor.commit();
//or
editor.apply();
否則你的操作不會是:
<開關 機器人:layout_width = 「WRAP_CONTENT」 機器人:layout_height = 「WRAP_CONTENT」 機器人:ID = 「@ + ID /交換機1」 機器人:文本= 「Alarma:」 機器人:TEXTSIZE = 「30sp」 機器人:layout_alignParentBottom = 「真」 機器人:layout_centerHorizontal = 「真」 機器人:layout_marginBottom = 「136dp」 機器人:的onClick = 「clickSwitchAlarm」/> –
'editor.commit()'末 –
或調用'編輯.apply()' – egoldx