3

ビュークラスのボタンを使用して、アプリからのサウンドをオフにしようとしています。(例:ミュート)ユーザーがボックスを押すと、コードで値がすでにtrueまたはflaseであるかどうかを確認し、「ミュート」と呼ばれる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また、commitを2回呼び出す必要もありません。そして、!platzhirschがすでに提案したようにnot演算子を使用することで、if(cmute...

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