【问题标题】:SharedPreferences & booleanSharedPreferences 和布尔值
【发布时间】:2012-07-26 14:09:49
【问题描述】:

我试图在执行方法时将“isPhysicalTheftEnabled”设置为 false,但这似乎不起作用。有人知道吗?

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

【问题讨论】:

    标签: android editor boolean sharedpreferences


    【解决方案1】:

    尝试添加ed.commit()

    即:

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

    SharedPreferences.Editors 要求您提交您在 SharedPreferences 中更改的任何内容,以便应用更改。

    关于您对 Ankit 回答的评论:

    要根据您保存到SharedPreferences 的布尔值设置CheckBox 的选中属性,您需要类似:

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

    .. 在其中为.getBoolean()def_value 选择truefalse(如果SharedPreferences 找不到布尔值)。

    【讨论】:

      【解决方案2】:

      您需要在更改SharedPreferences 中的值后调用ed.apply()

      如果您想检查错误,也可以使用ed.commit()commit()(与 apply() 不同)如果数据未(正确)写入持久存储,则返回 false。

      【讨论】:

        【解决方案3】:

        将数据放入 SP 后,您需要致电 editorObject.commit();

        对于您的问题,用下面的代码替换您的代码...

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

        【讨论】:

        • 我做了一个 .commit();已经,但复选框仍然没有被取消选中,知道为什么吗?
        • 向我们发布那段代码。您是否正确地从 SharedPreferences 获取布尔值并将 CheckBox 的 .setChecked() 设置为该布尔值?
        • 当您不使用PreferenceActivity 时,您必须通过checkBoxObject.setChecked(sharedPreferences.getBoolean("isPhysicalTheftEnabled", false)) 手动设置CheckBox 状态
        猜你喜欢
        • 1970-01-01
        • 2013-07-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-25
        • 2020-08-02
        • 2014-07-18
        相关资源
        最近更新 更多