dythe
dythe

Reputation: 841

SharedPreferences & boolean

I'm trying to set the "isPhysicalTheftEnabled" to false when a method is executed, but this doesn't seem to work. Anyone have any idea?

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

Upvotes: 2

Views: 7615

Answers (3)

Mxyk
Mxyk

Reputation: 10698

Try adding ed.commit().

i.e.:

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

SharedPreferences.Editors require that you commit anything you change in your SharedPreferences for the changes to apply.

Regarding your comment on Ankit's answer:

To set the checked property of your CheckBox based on the value of the boolean you saved to SharedPreferences, you need something like:

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

.. in which you pick either true or false for the def_value of .getBoolean() (if the SharedPreferences can't find the boolean).

Upvotes: 5

AAnkit
AAnkit

Reputation: 27549

You need to call editorObject.commit(); after you done with putting data into SP.

For your problem replace your code with below code...

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

Upvotes: 0

nkr
nkr

Reputation: 3058

You need to call ed.apply() after changing values in SharedPreferences.

You can also use ed.commit() if you want to check for errors. commit() (unlike apply()) returns false if the data was not (correctly) written to the persistent storage.

Upvotes: 2

Related Questions