我正在尝试使用视图类中的Button来关闭app中的声音。 (即:静音) 当用户按下框时,我希望代码检查值是否已经为真,或者使用名为“静音”的ID设置为相反。我想我有IF部件设置,只需要轻松将SharedPreferences从true更改为flase,反之亦然...
这是我正在测试的代码框架(BEFORE):
SharedPreferences getPrefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
boolean cmute = getPrefs.getBoolean("mute", defValue);
if (cmute == true){
}
if (cmute == false){
}
我已经尝试了各种解决方案,但大多数都太复杂了,我认为这个简单的需求......
这是我在发布建议后的返工:
if (cmute == false){
Editor editor = getPrefs.edit();
editor.putBoolean("mute", true);
editor.commit();
Editor editor2 = getPrefs.edit();
editor.putBoolean("notice", true);
editor.commit();
}
if (cmute == true){
Editor editor = getPrefs.edit();
editor.putBoolean("mute", false);
editor.commit();
Editor editor2 = getPrefs.edit();
editor.putBoolean("notice", false);
editor.commit();
}
答案 0 :(得分:4)
这可以通过Editor
界面实现:
用于修改SharedPreferences对象中的值的接口。所有 您在编辑器中所做的更改是批处理的,而不是复制回到 原始SharedPreferences,直到您调用commit()或apply()
那应该适合你:
SharedPreferences getPrefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
boolean cmute = getPrefs.getBoolean("mute", defValue);
Editor editor = getPrefs.edit();
editor.putBoolean("mute", !cmute);
editor.commit();
答案 1 :(得分:0)
评论您的AFTER建议版本:无需创建editor2
,您甚至不使用它,您在后续行中引用editor
。也不需要两次调用commit。通过使用not operator !
作为platzhirsch已建议,您无需if(cmute...
Editor editor = getPrefs.edit();
editor.putBoolean("mute", !cmute);
editor.putBoolean("notice", !cmute);
editor.commit();