在java中的首选项中更改true false

时间:2012-10-07 21:15:13

标签: java android

我正在尝试使用视图类中的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();

                }

2 个答案:

答案 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();