java - Saved SharedPreferences changes lost when app is cleared from memory -
i updating , saving array of values in sharedpreferences within settings activity. specifically, alertdialog in onclicklistener listview. changes seem saved fine - i.e. still intact after close , re-open mainactivity, app released memory , restarted sharedpreferences revert previous state.
i read somewhere calling editor.clear() before editor.commit() can prevent happening, has effect of deleting of other values in sharedpreferences (i.e. ones not editing in code).
can explain why losing sharedpreference updates, , how can fix this?
the code below:
final listview lv = (listview) findviewbyid(r.id.list_folders); lv.setonitemclicklistener(new adapterview.onitemclicklistener() { @override public void onitemclick(adapterview<?> parent, view view, int position, long id) { // listview clicked item index int itemposition = position; // listview clicked item value final string itemvalue = (string) lv.getitematposition(position); // ask user confirm deletion of item using alertdialog alertdialog.builder builder = new alertdialog.builder(sourcefolders.this); builder.settitle("confirm"); builder.setmessage("remove " + itemvalue + "?"); builder.setpositivebutton("yes", new dialoginterface.onclicklistener() { public void onclick(dialoginterface dialog, int which) { // yes - remove current item sharedpreferences sharedpreferences prefs = preferencemanager.getdefaultsharedpreferences(sourcefolders.this); set<string> set = prefs.getstringset("source_folders", null); if (set == null) { dialog.dismiss(); // list of folders in preferences empty - shouldn't happen } // remove selected item list set.remove(itemvalue); // update shared preferences sharedpreferences.editor edit = prefs.edit(); edit.putstringset("source_folders", set); edit.commit(); folderlist = new arraylist<string>(set); refreshlistviewfromprefs(); dialog.dismiss(); } }); builder.setnegativebutton("no", new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { // nothing dialog.dismiss(); } }); alertdialog alert = builder.create(); alert.show(); } });
Comments
Post a Comment