2017-05-29 30 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

欢迎您! –