android - Fragment's onCreate and onCreateView are not called -


i'm building application receive action.send intent , display files in clip data listview. listview inside sharefragment hosted mainactiviy. below how implement it.

public class sharefragment extends mfragment {      private static final string tag = "sharefragment";     private list<file> files;     private fileadapter fileadapter;      @override     public void oncreate(@nullable bundle savedinstancestate) {         super.oncreate(savedinstancestate);         log.e(tag, "oncreate called");     }      @nullable     @override     public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) {         files = new arraylist<>();         fileadapter = new fileadapter(getactivity(), 0, files);         view rootview = inflater.inflate(r.layout.share_fragment, container, false);         listview lv = (listview) rootview.findviewbyid(r.id.listview);         lv.setadapter(fileadapter);         log.e(tag, "oncreateview called");         return rootview;     }      public void setdata(list<file> files){         log.e(tag, "setdata called");         this.files = files;         fileadapter.notifydatasetchanged();     } 

and here how used in mainactivity

@override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_main);         intent intent = getintent();         sharefragment = (sharefragment) getsupportfragmentmanager().findfragmentbytag("share_fragment");         if(sharefragment == null) {             sharefragment = new sharefragment();             sharefragment.settitle("share");         }         fragmenttransaction ft = getsupportfragmentmanager().begintransaction();         ft.add(r.id.fl_root, sharefragment, "share_fragment");         ft.commit();         handleintent(intent);     } 

here handleintent method:

private void handleintent(intent intent) {     string action = intent.getaction();     string type = intent.gettype();     if ((intent.action_send.equals(action) || intent.action_send_multiple.equals(action)) && type != null) {         int size = intent.getclipdata().getitemcount();         list<file> files = new arraylist<>();         (int = 0; < size; i++) {             file file = new file(intent.getclipdata().getitemat(i).geturi().getpath());             files.add(file);         }         sharefragment.setdata(files);     } } 

my problem is when application started receive action.send intent, ran oncreate , processed line sharefragment = new sharefragment()

but oncreate , oncreateview of sharefragment never called. why?

note thought fragmentmanager kept instance of sharefragment when app first ran. try found fragment reused it, returned null.

edit got nullpointerexception right @ fileadapter.notifydatasetchanged();

caused by: java.lang.nullpointerexception: attempt invoke virtual method 'void icetea.com.quickshare.adapter.fileadapter.notifydatasetchanged()' on null object reference             @ icetea.com.quickshare.fragments.sharefragment.setdata(sharefragment.java:49)             @ icetea.com.quickshare.mainactivity.handleintent(mainactivity.java:63)             @ icetea.com.quickshare.mainactivity.oncreate(mainactivity.java:46)             @ android.app.activity.performcreate(activity.java:6374)             @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1119)             @ android.app.activitythread.performlaunchactivity(activitythread.java:2767)             at android.app.activitythread.handlelaunchactivity(activitythread.java:2879)             at android.app.activitythread.access$900(activitythread.java:182)             at android.app.activitythread$h.handlemessage(activitythread.java:1475)             at android.os.handler.dispatchmessage(handler.java:102)             at android.os.looper.loop(looper.java:145)             at android.app.activitythread.main(activitythread.java:6141)             at java.lang.reflect.method.invoke(native method)             at java.lang.reflect.method.invoke(method.java:372)             at com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:1399)             at com.android.internal.os.zygoteinit.main(zygoteinit.java:1194) 

move handleintent(intent); onresume()

you try set data in oncreate, @ time fragment isn't created

you find more in fragments documentation: http://developer.android.com/guide/components/fragments.html#lifecycle


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 -