android - Unable to access public fields of Fragment after screen orientation -


i have fragment loaded in viewpager:

public class mfragment extends fragment {      public arraylist<string> marraylist;      @override     public void onsaveinstancestate(bundle outstate) {         outstate.putstringarraylist("key", marraylist);         super.onsaveinstancestate(outstate);     }      public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) {          if (savedinstancestate != null) {             marraylist = savedinstancestate.getstringarraylist("key");         } else {             marraylist = new arraylist<>();         }          ...     }  } 

and inside oncreate() method of activity class:

mbutton.setonclicklistener(new view.onclicklistener() {     @override     public void onclick(view view) {         mfragment currentfragment = (mfragment) mfragmentpageradapter.getitem(mviewpager.getcurrentitem());         currentfragment.marraylist.clear();     } }); 

i clear arraylist clicking on mbutton, after changing screen orientation got following error:

06-14 17:35:08.274    1995-1995/? e/androidruntime﹕ fatal exception: main     process: a.wallpaper, pid: 1995     java.lang.nullpointerexception: attempt invoke virtual method 'void java.util.arraylist.clear()' on null object reference             @ a.wallpaper.mainactivity$6.onclick(mainactivity.java:123)             @ android.view.view.performclick(view.java:4780)             @ android.view.view$performclick.run(view.java:19866)             @ android.os.handler.handlecallback(handler.java:739)             @ android.os.handler.dispatchmessage(handler.java:95)             @ android.os.looper.loop(looper.java:135)             @ android.app.activitythread.main(activitythread.java:5254)             @ java.lang.reflect.method.invoke(native method)             @ java.lang.reflect.method.invoke(method.java:372)             @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:903)             @ com.android.internal.os.zygoteinit.main(zygoteinit.java:698) 

based on this answer, after overriding instantiateitem() method inside mfragmentpageradapter class, error went away:

@override public object instantiateitem(viewgroup container, int position) {     galleryfragment fragment = (galleryfragment) super.instantiateitem(container, position);     fragments[position] = fragment;     return fragment; } 

Comments

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -