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().

IE:

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

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

关于您对 Ankit 回答的评论:

CheckBox要根据您保存到的布尔值设置您的检查属性SharedPreferences,您需要以下内容:

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

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

于 2012-07-26T14:11:41.390 回答
2

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

ed.commit()如果要检查错误,也可以使用。commit()(不像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 回答