Android shared preferences not saving

前端 未结 5 479
庸人自扰
庸人自扰 2020-12-05 13:12

I\'ve created an Android live wallpaper and i\'m trying to let a user choose an image from their phone and apply it as a background image, but when I launch the activity tha

相关标签:
5条回答
  • Try another way of initializing your SharedPreferences variable:

    SharedPreferences sf = PreferenceManager.getDefaultSharedPreferences(this);
    

    You can also chain writing to sf with sf.edit().putString(string, value).commit();

    0 讨论(0)
  • 2020-12-05 13:32

    Bear in mind that you need the same activity to save and retrieve data. You can not use a method like

    public String readValue(Activity activity, String key) {
        SharedPreferences sp = activity.getPreferences(Context.Mode_PRIVATE);
       //...
    }
    

    For receiving the same data from the same activity you need to call this method with the exact same activity which you had saved your data.

    0 讨论(0)
  • 2020-12-05 13:35

    From the documentation:

    Create a new Editor for these preferences, through which you can make modifications to the data in the preferences and atomically commit those changes back to the SharedPreferences object.

    Since that's a new Editor instance, your code should be more like this:

    preferences = getApplicationContext().getSharedPreferences(PREFERENCES_NAME, 0);
    SharedPreferences.Editor editor = preferences.edit();
    editor.putString(SETTINGS_BACKGROUND_IMAGE, "okok");
    editor.apply();
    
    0 讨论(0)
  • 2020-12-05 13:43

    well, based on @zrgiu post, for me only worked adding editor.clear(); before use the Editor...so the final code will be something like:

    preferences = getApplicationContext().getSharedPreferences(PREFERENCES_NAME, 0);
    SharedPreferences.Editor editor = preferences.edit();
    editor.clear();
    editor.putString(SETTINGS_BACKGROUND_IMAGE, "okok");
    editor.commit();
    

    ;)

    0 讨论(0)
  • 2020-12-05 13:45

    In my case I had to add editor.apply(); before commit in order to work.

    This is my code:

    preferences = getApplicationContext().getSharedPreferences(PREFERENCES_NAME, 0);
    SharedPreferences.Editor editor = preferences.edit();
    editor.putString(SETTINGS_BACKGROUND_IMAGE, "okok");
    editor.apply();//I added this line and started to work...
    editor.commit();
    
    0 讨论(0)
提交回复
热议问题