android - FragmentPagerAdapter showing fragments wrongly in ViewPager -


i have actionbaractivity inside have viewpager. expect see 4 (first, second, third, four) fragments in 4 (first, second, third, fourth) pages.

problem:

  • i see second fragment on first page.
  • i move second page. saw nothing.
  • i move first page. saw second fragment.

in oncreate() of actionbaractvity, have:

mviewpager = (viewpager) findviewbyid(r.id.pager); mpageradapter = new mypageradapter(getsupportfragmentmanager(), mgoodarraylistofwords);  mviewpager.setadapter(mpageradapter); 

this how mypageradapter looks:

public class mypageradapter extends fragmentpageradapter {      private arraylist<string> mwords;       public mypageradapter(fragmentmanager fm, arraylist<string> words) {         super(fm);         mwords = words;     }       @override     public fragment getitem(int position) {         string specificword = mwords.get(position);         return myfragment.newinstance(specificword);     }      @override     public int getcount() {         return mwords.size();     }      @override     public charsequence getpagetitle(int position) {         return mwords.get(position);     } } 

i instantiated myfragment using static factory method , made no-arg constructor private:

    public static myfragment newinstance(string word) {         myfragment fragment = new myfragment();         bundle args = new bundle();         args.putstring("word", word);         fragment.setarguments(args);         return fragment;     }      private myfragment() {         super();     } 

moreover, in onviewoncreated(), handle fragment's list view, use loadermanager init() loader. update list view's adapter in onloadfinished() of loadermanager.loadercallbacks<cursor>.

i think problem due loaders finish jobs after fragments' views have been created. log when expect 2 pages , 2 fragments:

04-01 23:15:55.707 d/debugtag﹕ getitem called 04-01 23:15:55.717 d/debugtag﹕ getitem called 04-01 23:15:55.717 d/debugtag﹕ on view created called 04-01 23:15:55.797 d/debugtag﹕ on view created called 04-01 23:15:56.157 d/debugtag﹕ on load finished called 04-01 23:15:56.177 d/debugtag﹕ on load finished called 

extend fragmentstatepageradapter you're using getitem() method. if want keep fragmentpageradapter override instantiateitem().


Comments

Popular posts from this blog

javascript - AngularJS custom datepicker directive -

javascript - jQuery date picker - Disable dates after the selection from the first date picker -