在java的首选项中更改true false

在java的首选项中更改true false,java,android,Java,Android,我正在尝试使用view类中的按钮关闭应用程序中的声音。(即:静音) 当用户按下该框时,我希望代码检查该值是否已经为真或为空,然后使用名为“静音”的ID设置为相反。我想我有如果部分设置,只需要简单地改变SharedReferences从真到flase,反之亦然 以下是我(之前)正在测试的代码框架: 我尝试了各种解决方案,但大多数都太复杂了,我认为这是一个简单的需要 以下是我在发布建议后的返工: if (cmute == false){ Editor ed

我正在尝试使用view类中的按钮关闭应用程序中的声音。(即:静音) 当用户按下该框时,我希望代码检查该值是否已经为真或为空,然后使用名为“静音”的ID设置为相反。我想我有如果部分设置,只需要简单地改变SharedReferences从真到flase,反之亦然

以下是我(之前)正在测试的代码框架:

我尝试了各种解决方案,但大多数都太复杂了,我认为这是一个简单的需要

以下是我在发布建议后的返工:

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

                }

这可以通过以下接口实现:

用于修改SharedReferences对象中的值的接口。全部的 在编辑器中所做的更改是批处理的,而不是复制回 原始SharedReference,直到调用commit()或apply()为止

这应该对你有用:

SharedPreferences getPrefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
boolean cmute = getPrefs.getBoolean("mute", defValue);
Editor editor = getPrefs.edit();
editor.putBoolean("mute", !cmute);
editor.commit();

评论您的建议后版本:无需创建
编辑器2
,您甚至不使用它,您在后续行中引用了
编辑器。也不需要调用commit两次。并使用not运算符
正如platzhirsch已经建议的那样,您不需要
if(cmute…

Editor editor = getPrefs.edit(); 
editor.putBoolean("mute", !cmute);
editor.putBoolean("notice", !cmute); 
editor.commit(); 

您应该将if语句更新为:if(cmute){..}else{..}@Droidster Jox意味着您可以去掉
==true
部分;而且您不需要第二个
if
,只需使用
else
子句。@Droidster Jox正在给您的代码样式提供建议。
if(cmute==true)
是冗余的。它与
if(cmute)相同
因为if构造无论如何都需要一个布尔值。还要注意
else
构造-1,因为这里的逻辑仍然过于复杂。按照建议,学会使用not运算符“!”。此外,无需创建两个编辑器并调用commit两次。请参阅我的答案。下面是它的工作原理,我尝试了else,但抛出了错误。感谢所有人om参与。=]
Editor editor = getPrefs.edit(); 
editor.putBoolean("mute", !cmute);
editor.putBoolean("notice", !cmute); 
editor.commit();