SharedPreferences不读

时间:2012-05-20 17:33:47

标签: java android xml sharedpreferences

我的应用程序出现了奇怪的问题。 我已经设置了一个SharedPreference,就像这个

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采用默认值。

真的很生气!请帮助!

3 个答案:

答案 0 :(得分:2)

删除editor.clear();从条件来看。如清除将清除SharedPreference中的所有数据。

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

        editor.putBoolean("checkFlag", true);
        editor.commit();
    }

答案 1 :(得分:1)

解决了! 这段代码很好,而问题是以生命周期为导向。我依赖了另一个SharedPreference。那一次又一次变得虚假。

答案 2 :(得分:0)

我想你想在第一个代码示例的第三行使用if(!flag)( not flag)。