SharedPreferences & boolean

后端 未结 3 1875
不知归路
不知归路 2021-01-07 11:26

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?

        SharedPre         


        
相关标签:
3条回答
  • 2021-01-07 11:54

    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.

    0 讨论(0)
  • 2021-01-07 11:57

    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();
    
    0 讨论(0)
  • 2021-01-07 12:07

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

    0 讨论(0)
提交回复
热议问题