2017-05-29 29 views
0

我使用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(); 

否則你的操作不會是:​​

+0

<開關 機器人:layout_width = 「WRAP_CONTENT」 機器人:layout_height = 「WRAP_CONTENT」 機器人:ID = 「@ + ID /交換機1」 機器人:文本= 「Alarma:」 機器人:TEXTSIZE = 「30sp」 機器人:layout_alignParentBottom = 「真」 機器人:layout_centerHorizo​​ntal = 「真」 機器人:layout_marginBottom = 「136dp」 機器人:的onClick = 「clickSwitchAlarm」/> –

+1

'editor.commit()'末 –

+0

或調用'編輯.apply()' – egoldx

回答

1

(與API15工作)將在編輯器中的值後,您必須通過調用commit()apply() method`s確認操作驗證並且值不會被保存。

+0

謝謝!我沒有注意到! –

+0

歡迎您! –