2

アプリで奇妙な問題が発生しています。このように、SharedPreference を 1 つ設定しました

SharedPreferences prefs = PreferenceManager
                .getDefaultSharedPreferences(this);
        flag = prefs.getBoolean("handle_calls", false);
        if (flag) {
            SharedPreferences.Editor editor = prefs.edit();
            editor.clear();
            editor.putBoolean("checkFlag", true);
            editor.commit();
        }

数日前は正常に動作していましたが、現在はこのコードは正常に動作していますが、SmsReceiver クラスでこれらの設定を読み込もうとすると、SharedPreferencesこれらの値が読み取られず、デフォルト値が読み取られます (false)...時々動作し、ほとんどの場合まったく機能しません!これが私が読んでいる方法ですSharedPreferences

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
    SmsManager sms = SmsManager.getDefault();

    //flag = prefs.getBoolean("handle_calls", false);
    checkFlag = prefs.getBoolean("checkFlag", false);
    checkDecisionFlag = prefs.getBoolean("checkDecisionFlag", false);

これcheckDecisionFlagは正常に機能していますが、checkFlag はデフォルト値を使用しています。

本当に怒っている!助けてください!

4

3 に答える 3

2

editor.clear();を削除します。if条件から。クリアすると、SharedPreferenceからすべてのデータがクリアされます。

 if (flag) {
        SharedPreferences.Editor editor = prefs.edit();

        editor.putBoolean("checkFlag", true);
        editor.commit();
    }
于 2012-05-20T17:38:10.563 に答える
1

解決しました!このコードは問題ありませんでしたが、問題はライフサイクル指向にありました。SharedPreference私はこれが依存しているお互いを持っていました。それは何度も何度も間違っていました。

于 2012-08-25T17:42:41.547 に答える
0

最初のコードサンプルの3行目にif(!flag)(flagではない)を使用したいと思います。

于 2012-05-20T17:38:51.327 に答える