3

我正在尝试使用视图类中的按钮来关闭应用程序的声音。(即:静音)当用户按下框时,我希望代码检查值是否已经为真或闪烁,然后使用名为“静音”的 ID 设置为相反。我想我有 IF 部分设置,只需要轻松地将 SharedPreferences 从 true 更改为 flase ,反之亦然......

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

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

                }
4

2 回答 2

4

这可以通过Editor接口实现:

用于修改 SharedPreferences 对象中的值的接口。您在编辑器中所做的所有更改都是批处理的,并且在您调用 commit() 或 apply() 之前不会复制回原始 SharedPreferences

这应该对你有用:

SharedPreferences getPrefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
boolean cmute = getPrefs.getBoolean("mute", defValue);
Editor editor = getPrefs.edit();
editor.putBoolean("mute", !cmute);
editor.commit();
于 2012-10-07T21:28:51.183 回答
0

评论您的 AFTER 建议版本:无需创建editor2,您甚至不使用它,您editor在后续行中引用。也无需调用两次提交。并且通过使用!platzhirsch 已经建议的 not 运算符,您不再需要if(cmute...

Editor editor = getPrefs.edit(); 
editor.putBoolean("mute", !cmute);
editor.putBoolean("notice", !cmute); 
editor.commit(); 
于 2012-10-08T12:36:57.747 回答