Android TabLayout not reloading fragments -
i noticed tablayout
loads fragments
has display once, when replace fragment
containing tablayout
, switch it, not recreate fragments
holds, , no longer displaying anything. design or doing wrong? using outer fragment
in navigationdrawer
, , when user switches fragment
, back, tab fragments
empty because don't recreated. noticed tabs act strange after switch fragment containing them (they white line below jumps , can hold still between 2 tabs without touching screen)
the code i'm using:
public class fragment1 extends fragment { private static viewpager viewpager; private static tablayout tablayout; @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { utils.changelanguage(getactivity()); final context contextthemewrapper = new contextthemewrapper(getactivity(), r.style.linesoverlay); layoutinflater localinflater = inflater.cloneincontext(contextthemewrapper); view view = localinflater.inflate(r.layout.fragment1, container, false); viewpager = (viewpager) view.findviewbyid(r.id.viewpager); tablayout = (tablayout) view.findviewbyid(r.id.tabs); return view; } @override public void onactivitycreated(bundle savedinstancestate) { super.onactivitycreated(savedinstancestate); setupviewpager(viewpager); tablayout.setupwithviewpager(viewpager); } private void setupviewpager(viewpager viewpager) { linestabsadapter adapter = new linestabsadapter(getactivity().getsupportfragmentmanager()); adapter.addfragment(new fragment2(), "fragment 1"); adapter.addfragment(new fragment3(), "fragment 2"); viewpager.setadapter(adapter); } public static class fragment2 extends fragment { @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { view view = inflater.inflate(r.layout.activity_lines_driving, container, false); return view; } @override public void onactivitycreated(bundle savedinstancestate) { super.onactivitycreated(savedinstancestate); } } public static class fragment3 extends fragment { @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { view view = inflater.inflate(r.layout.activity_lines_all, container, false); return view; } @override public void onactivitycreated(bundle savedinstancestate) { super.onactivitycreated(savedinstancestate); } }
linestabsadapter:
public class linestabsadapter extends fragmentpageradapter { private final list<fragment> fragments = new arraylist<>(); private final list<string> fragmenttiles = new arraylist<>(); public linestabsadapter(fragmentmanager fm) { super(fm); } public void addfragment(fragment fragment, string title) { fragments.add(fragment); fragmenttiles.add(title); } @override public fragment getitem(int position) { return fragments.get(position); } @override public int getcount() { return fragments.size(); } @override public charsequence getpagetitle(int position) { return fragmenttiles.get(position); } }
i had same problem , answer in page solved problem. use getchildfragmentmanager()
instead of getsupportfragmentmanager()
android tablayout not display contents anymore fragment switched
Comments
Post a Comment