2

メソッドの実行時に「isPhysicalTheftEnabled」を false に設定しようとしていますが、うまくいかないようです。誰でも何か考えがありますか?

        SharedPreferences sp = getSharedPreferences("isPhysicalTheftEnabled", MODE_WORLD_READABLE);
        SharedPreferences.Editor ed = sp.edit();
        ed.putBoolean("isPhysicalTheftEnabled", false);
4

3 に答える 3

5

を追加してみてくださいed.commit()

すなわち:

SharedPreferences sp = getSharedPreferences("isPhysicalTheftEnabled", MODE_WORLD_READABLE);
SharedPreferences.Editor ed = sp.edit();
ed.putBoolean("isPhysicalTheftEnabled", false);
ed.commit();

SharedPreferences.Editor変更を適用するには、SharedPreferences で変更したものをすべてコミットする必要があります。

Ankitの回答に対するコメントについて:

CheckBoxに保存したブール値の値に基づいて、の checked プロパティを設定するには、次のSharedPreferencesようなものが必要です。

SharedPreferences sp = getSharedPreferences("isPhysicalTheftEnabled", MODE_WORLD_READABLE);
myCheckBox.setChecked(sp.getBoolean("isPhysicsTheftEnabled", [true/false]);

.. またはのいずれtruefalseを選択します(ブール値が見つからない場合)。def_value.getBoolean()SharedPreferences

于 2012-07-26T14:11:41.390 に答える
2

ed.apply()で値を変更した後に呼び出す必要がありますSharedPreferences

ed.commit()エラーをチェックしたい場合にも使用できます。commit()(unlike apply()) は、データが永続ストレージに (正しく) 書き込まれなかった場合に false を返します。

于 2012-07-26T14:10:50.703 に答える
0

editorObject.commit();SPにデータを入れ終わったら呼び出す必要があります。

あなたの問題については、コードを以下のコードに置き換えてください...

        SharedPreferences sp = getSharedPreferences("isPhysicalTheftEnabled", MODE_WORLD_READABLE);
        SharedPreferences.Editor ed = sp.edit();
        ed.putBoolean("isPhysicalTheftEnabled", false);
        ed.commit();
于 2012-07-26T14:13:25.623 に答える