Android : on returning back to viewpager from fragment viewpager tabs increases with null views -
sorry if question posted. have seen many issues on topic problem different . in mainactivity load tabandviewpager fragment in container .that view pager contains 2 fragment works fine on start when load fragment in mainactivity container , press see 4 tabs instead of 2 , when swipe runtime exception thrown , app crashes . answers appreciated thanx
i posting of code here can see below tabviewpager fragment load in main container
public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { if (rootview == null) { rootview = inflater.inflate(r.layout.tab_view_pager, container, false); } tablayout = (tablayout) rootview.findviewbyid(r.id.tabs); tablayout.addtab(tablayout.newtab().settext("public").seticon(r.drawable.ic_menu_camera)); tablayout.addtab(tablayout.newtab().settext("anonymous").seticon(r.drawable.ic_menu_camera)); tablayout.settabtextcolors(getresources().getcolor(android.r.color.darker_gray), getresources().getcolor(android.r.color.white)); tablayout.gettabat(0).seticon(r.drawable.ic_menu_camera); tablayout.settabmode(tablayout.mode_fixed); tablayout.settabgravity(tablayout.gravity_fill); viewpager = (viewpager) rootview.findviewbyid(r.id.viewpager); tablayout.addontabselectedlistener(new tablayout.ontabselectedlistener() { @override public void ontabselected(tablayout.tab tab) { viewpager.setcurrentitem(tab.getposition()); (int = 0; < tablayout.gettabcount(); i++) { tablayout.gettabat(i).seticon(r.drawable.ic_menu_gallery); } tablayout.gettabat(tab.getposition()).seticon(r.drawable.ic_menu_camera); } @override public void ontabunselected(tablayout.tab tab) { } @override public void ontabreselected(tablayout.tab tab) { } }); //if viewpager in fragment use getchildfragman else getfragmanager fspamain = new tabfspa(getchildfragmentmanager(), tablayout.gettabcount()); viewpager.setadapter(fspamain); viewpager.addonpagechangelistener(new tablayout.tablayoutonpagechangelistener(tablayout)); return rootview; }
some code main activity
protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); butterknife.inject(this); binddata(); initialisenavbar(navbar); if(savedinstancestate != null) { fragment frag = (tabviewpager) getsupportfragmentmanager().findfragmentbytag("main"); launchfragment(frag, "main"); } else { launchfragment(new tabviewpager(), "main"); } } // code public void onbackpressed() { drawerlayout drawer = (drawerlayout) findviewbyid(r.id.drawer_layout); if (drawer.isdraweropen(gravitycompat.start)) { drawer.closedrawer(gravitycompat.start); } else if (getfragmentmanager().getbackstackentrycount() > 0) { getsupportfragmentmanager().popbackstack(); } else { super.onbackpressed(); } } // more code private void launchfragment(fragment fragment, string fragment_tag) { fragmenttransaction ft = getsupportfragmentmanager().begintransaction(); ft.setcustomanimations(r.anim.push_left_in, 0, 0, r.anim.push_left_out); ft.replace(r.id.container, fragment); // if not main fragment add stack handle button if (!fragment_tag.equals("main")) { if (ft.isaddtobackstackallowed()) { ft.addtobackstack(null); } } ft.commit(); } // launching new fragment in container private void launchnavmenu(int pos, boolean islogin) { if (islogin) { switch (pos) { case 1: show.message(this, "home clicked"); break; case 2: show.message(this, "profile clicked"); launchfragment(new profile(), "profile"); break; } } } }
Comments
Post a Comment