简体   繁体   中英

SharedPreferences not working as expected, cannot read nor write preferences

private void init() {

    SharedPreferences prefs = getSharedPreferences("data", Context.MODE_PRIVATE);

    // SET VALUE RECORD

    record = prefs.getInt("record", 0);

    prefs.edit().commit();
}

private void setRecord(int i ) {

    SharedPreferences prefs = getSharedPreferences("data", Context.MODE_PRIVATE);

    if(i > prefs.getInt("record", 0))
        prefs.edit().putInt("record", i);

    prefs.edit().commit();
}

private int getRecord() {

    int rec;

    SharedPreferences prefs = getSharedPreferences("data", Context.MODE_PRIVATE);

    rec = prefs.getInt("record", 0);

    prefs.edit().commit();

    Toast toast = Toast.makeText(this, rec+"", Toast.LENGTH_SHORT);
    toast.show();

    return rec;
}

this code should set an int and retrieve it, but it doesn't seem to ever set it... can you see why is that?

try

Editor editor = prefs.edit();
editor.putInt("record",i);
editor.commit();

Think it is best to call the interface SharedPreferences.Editor to edit preferences instead of using prefs.edit().putInt("record", i); . The docs say...

Modifications to the preferences must go through an SharedPreferences.Editor object to ensure the preference values remain in a consistent state and control when they are committed to storage.

If you change your setMethod to the following it should work...

private void setRecord(int i ) {

    SharedPreferences prefs = getSharedPreferences("data", Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = prefs.edit();

    if(i > prefs.getInt("record", 0))
        editor.putInt("record", i);

    editor.commit();
}

And I guess you are calling the above method setRecord somewhere in your code as I can't see it being called anywhere in the code snippet you pasted.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM