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

Payment information shows nothing in one page checkout page magento -

tcpdump - How to check if server received packet (acknowledged) -