【问题标题】:SharedPreferences not ReadingSharedPreferences 未阅读
【发布时间】:2012-05-27 09:15:41
【问题描述】:

我的应用出现了奇怪的问题。 我已经设置了一个 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 没有读取这些值并且读取了默认值(假)......有时它工作,大多数时候它根本不起作用! 以下是我阅读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 采用默认值。

真的很生气!请帮忙!

【问题讨论】:

    标签: java android xml sharedpreferences


    【解决方案1】:

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

     if (flag) {
            SharedPreferences.Editor editor = prefs.edit();
    
            editor.putBoolean("checkFlag", true);
            editor.commit();
        }
    

    【讨论】:

    • 也因为最近运行良好,只需卸载并再次安装该应用程序。
    • 试过卸载,在写这段代码之前,我用的是没有clear()的代码
    【解决方案2】:

    我认为您想在第一个代码示例的第三行使用 if (!flag) (not 标志)。

    【讨论】:

      【解决方案3】:

      解决了! 这段代码很好,但问题在于面向生命周期。我有另一个 SharedPreference 这取决于它。那是一次又一次的错误。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-05-15
        • 1970-01-01
        • 1970-01-01
        • 2019-08-17
        • 2015-09-01
        • 1970-01-01
        • 2012-12-17
        相关资源
        最近更新 更多