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
Post a Comment