android - Fragment's on CreateView is not called when using ViewPager -
i'm developing android application have viewpager in mainactivity, consisting of 3 fragments. problem follows, when swipe 3rd fragment, , 1st one, oncreateview of fragment 1 called want, however, if swipped 2nd fragment only, , returned 1st one, oncreateview not called! need find solution problem, spent hours trying find solution didn't know solve it. here's code related viewpager in mainactivity
private void setupviewpager(final viewpager viewpager) { final viewpageradapter adapter = new viewpageradapter(getsupportfragmentmanager()); adapter.addfrag(new voting(), "one"); adapter.addfrag(new dashboard(), "two"); adapter.addfrag(new chats(), "three"); myadapter=adapter; viewpager.setadapter(adapter); viewpager.setoffscreenpagelimit(0); } private class viewpageradapter extends fragmentstatepageradapter { private final list<fragment> mfragmentlist = new arraylist<fragment>(); private final list<string> mfragmenttitlelist = new arraylist<string>(); private viewpageradapter(fragmentmanager manager) { super(manager); } @override public fragment getitem(int position) { log.i("getitem","getitem"); return mfragmentlist.get(position); } @override public int getcount() { return mfragmentlist.size(); } private void addfrag(fragment fragment, string title) { mfragmentlist.add(fragment); mfragmenttitlelist.add(title); } //added newly @override public int getitemposition(object object){ return pageradapter.position_none; } @override public charsequence getpagetitle(int position) { return null; } }
this intended behavior fragmentpageradapter. if fragment created , still in memory, reattached viewpager. hence, reason why oncreateview(...) isn't called second time.
implementation of pageradapter represents each page fragment persistently kept in fragment manager long user can return page.
you're using fragmentstatepageradapter subclass of fragmentpageradapter, inherits behavior.
generally, it's not idea recreate view on every page change, expensive , can lead non smooth scrolling. if had logic in oncreateview(...) want run again on each fragment change, suggest looking viewpager.onpagechangedlistener.
Comments
Post a Comment