android - the first fragment in tabbed activity is always blank -


i'm using tabbed activity show 3 tabs problem is, first tab blank, while second , third works. , if click third 1 , after click on first one, first loads data

public class main2activity extends appcompatactivity {  /**  * {@link android.support.v4.view.pageradapter} provide  * fragments each of sections. use  * {@link fragmentpageradapter} derivative, keep every  * loaded fragment in memory. if becomes memory intensive,  * may best switch  * {@link android.support.v4.app.fragmentstatepageradapter}.  */ private sectionspageradapter msectionspageradapter;  /**  * {@link viewpager} host section contents.  */ private viewpager mviewpager;  @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_main2);      //toolbar toolbar = (toolbar) findviewbyid(r.id.toolbar);     //setsupportactionbar(toolbar);     // create adapter return fragment each of 3     // primary sections of activity.     msectionspageradapter = new sectionspageradapter(getsupportfragmentmanager());      // set viewpager sections adapter.     mviewpager = (viewpager) findviewbyid(r.id.container);     mviewpager.setadapter(msectionspageradapter);      tablayout tablayout = (tablayout) findviewbyid(r.id.tabs);     tablayout.setupwithviewpager(mviewpager); }   @override public boolean oncreateoptionsmenu(menu menu) {     // inflate menu; adds items action bar if present.     getmenuinflater().inflate(r.menu.menu_main2, menu);     return true; }  @override public boolean onoptionsitemselected(menuitem item) {     // handle action bar item clicks here. action bar     // automatically handle clicks on home/up button, long     // specify parent activity in androidmanifest.xml.     int id = item.getitemid();      //noinspection simplifiableifstatement     if (id == r.id.action_settings) {         return true;     }      return super.onoptionsitemselected(item); }  /**  * placeholder fragment containing simple view.  */  /**  * {@link fragmentpageradapter} returns fragment corresponding  * 1 of sections/tabs/pages.  */ public static class sectionspageradapter extends fragmentstatepageradapter {      public sectionspageradapter(fragmentmanager fm) {         super(fm);     }      @override     public fragment getitem(int position) {         // getitem called instantiate fragment given page.         // return movies_fragment (defined static inner class below).         movies_fragment fragment =  movies_fragment.newinstance(position );         return fragment;      }        @override     public int getcount() {         // show 3 total pages.         return 3;     }         @override     public charsequence getpagetitle(int position) {         switch (position) {             case 0:                 return "most popular";             case 1:                 return "top rated";             case 2:                 return "top rated 2";         }         return null;     } } 

}

public class movies_fragment extends fragment {  public static imageadapter imageadapter;   public static movies_fragment newinstance(int sectionnumber) {     movies_fragment fragment = new movies_fragment();     bundle args = new bundle();     args.putint("index", sectionnumber);     fragment.setarguments(args);      return fragment; }  @override public void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     sethasoptionsmenu(true);   }  @override public void onstart() {     super.onstart();     updatemovies();     //imageadapter.notifydatasetchanged();  }  public void updatemovies() {     fetchmovietask movietask = new fetchmovietask();     bundle bundle = getarguments();     int index = bundle.getint("index");     movietask.execute(index); }  @override public void oncreateoptionsmenu(menu menu, menuinflater inflater) {     super.oncreateoptionsmenu(menu, inflater); }  @override public view oncreateview(layoutinflater inflater, viewgroup container,                          bundle savedinstancestate) {     view rootview = inflater.inflate(r.layout.fragment_movies_, container, false);      imageadapter = new imageadapter(getactivity());     gridview gridview = (gridview)rootview.findviewbyid(r.id.gridview);     gridview.setadapter(imageadapter);      gridview.setonitemclicklistener(new adapterview.onitemclicklistener() {         @override         public void onitemclick(adapterview<?> adapterview, view view, int i, long l) {             mdmovie movie = (mdmovie) imageadapter.getitem(i);             intent intent = new intent(getactivity(),moviedetailsactivity.class);             intent.putextra("movie", movie);             startactivity(intent);         }     });      return  rootview; }  } 

this happened 1 of projects , unable diagnose too. ended using [dirty] hack. not solution far but, worked us. simulate page change on start:

@override  protected void oncreate(bundle savedinstancestate) {     ...      // set viewpager sections adapter.      mviewpager = (viewpager) findviewbyid(r.id.container);     mviewpager.setadapter(msectionspageradapter);      tablayout tablayout = (tablayout) findviewbyid(r.id.tabs);     tablayout.setupwithviewpager(mviewpager);      mviewpager.setcurrentitem(1);     mviewpager.setcurrentitem(0); }  

Comments

Popular posts from this blog

amazon web services - S3 Pre-signed POST validate file type? -

c# - Check Keyboard Input Winforms -