java - Using SharedPreferences for custom ArrayList -- Adapter or Editor error? -


i attempting save custom arraylist sharedpreferences. ideally first time app runs, there should empty sharedpreferences, if need fill 1 item, can "example." i've tried using debug break points , have isolated problem setadapter line marked below.

the app crashes @ setadapter line, may due editor not being initialized? debugger tells me "editor = null"

public class mainactivity extends appcompatactivity {     arraylist<purchaseorders> purchaseorders = new arraylist<purchaseorders>();     purchaseorderadapter adapter;      public sharedpreferences sharedpref;     public sharedpreferences.editor editor;      @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_main);          purchaseorders = new arraylist<purchaseorders>();          string[] items = new string[]{"1", "2", "3"};          purchaseorders.add(new purchaseorders(false, "purchasenumber", "customer", "date 1", "date 2", items));          save();          sharedpref = this.getsharedpreferences("com.lochdownstudios.simplepurchaseorderer", context.mode_private);         editor = sharedpref.edit();          load();          adapter = new purchaseorderadapter(this, purchaseorders);         final listview listview = (listview) findviewbyid(r.id.listview);         listview.setadapter(adapter); // break point here.     }      private void save() {         gson gson = new gson();         string json = gson.tojson(purchaseorders);         editor.putstring("savedpurchaseorders", json); //editor = null .... hmmm....         editor.apply();     }      private void load() {         gson gson = new gson();         string json = sharedpref.getstring("savedpurchaseorders", "");         type type = new typetoken<list<purchaseorders>>(){}.gettype();         purchaseorders = gson.fromjson(json, type);     } } 

at break point (mentioned in comments), debugger tells me "editor = null". , following step crashes following logcat.

08-23 19:06:02.799 23974-23974/com.lochdownstudios.simplepurchaseorderer e/androidruntime: fatal exception: main process: com.lochdownstudios.simplepurchaseorderer, pid: 23974 java.lang.runtimeexception: unable start activity componentinfo{com.lochdownstudios.simplepurchaseorderer/com.lochdownstudios.simplepurchaseorderer.mainactivity}: java.lang.nullpointerexception: attempt invoke interface method 'android.content.sharedpreferences$editor android.content.sharedpreferences$editor.putstring(java.lang.string, java.lang.string)' on null object reference @ android.app.activitythread.performlaunchactivity(activitythread.java:3253) @ android.app.activitythread.handlelaunchactivity(activitythread.java:3349) @ android.app.activitythread.access$1100(activitythread.java:221) @ android.app.activitythread$h.handlemessage(activitythread.java:1794) @ android.os.handler.dispatchmessage(handler.java:102) @ android.os.looper.loop(looper.java:158) @ android.app.activitythread.main(activitythread.java:7224) @ java.lang.reflect.method.invoke(native method) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:1230) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:1120) caused by: java.lang.nullpointerexception: attempt invoke interface method 'android.content.sharedpreferences$editor android.content.sharedpreferences$editor.putstring(java.lang.string, java.lang.string)' on null object reference @ com.lochdownstudios.simplepurchaseorderer.mainactivity.save(mainactivity.java:119) @ com.lochdownstudios.simplepurchaseorderer.mainactivity.oncreate(mainactivity.java:39) @ android.app.activity.performcreate(activity.java:6876) @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1135) @ android.app.activitythread.performlaunchactivity(activitythread.java:3206) @ android.app.activitythread.handlelaunchactivity(activitythread.java:3349) @ android.app.activitythread.access$1100(activitythread.java:221)  @ android.app.activitythread$h.handlemessage(activitythread.java:1794)  @ android.os.handler.dispatchmessage(handler.java:102)  @ android.os.looper.loop(looper.java:158)  @ android.app.activitythread.main(activitythread.java:7224)  @ java.lang.reflect.method.invoke(native method)  @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:1230) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:1120)  

thoughts? thanks!

you calling save uses editor before initializing editor

maybe change order to

    sharedpref = this.getsharedpreferences("com.lochdownstudios.simplepurchaseorderer",                                                                     context.mode_private);     editor = sharedpref.edit();      save(); 

Comments

Popular posts from this blog

mysql - Dreamhost PyCharm Django Python 3 Launching a Site -

java - Sending SMS with SMSLib and Web Services -

java - How to resolve The method toString() in the type Object is not applicable for the arguments (InputStream) -