i'm having strange issue titles of tabs not showing when test app on marshmallow device. when test on other devices, titles show fine. while debugging, device hits of same points including the "getpagetitle" method inside adapter. i've read through many tutorials using android's tablayout , viewpager, make absolutely i'm not missing anything, , can tell, not doing wrong.
here code in main activity,
// setup viewpager final viewpager viewpager = (viewpager) findviewbyid(r.id.viewpager); setupviewpager(viewpager); // setup tablayout tablayout tablayout = (tablayout) findviewbyid(r.id.tablayout); tablayout.setupwithviewpager(viewpager); viewpager.addonpagechangelistener(new tablayout.tablayoutonpagechangelistener(tablayout));
my setupviewpager() method,
private void setupviewpager(viewpager viewpager) { viewpageradapter adapter = new viewpageradapter(getfragmentmanager()); viewpager.setadapter(adapter); }
and adapter class extends fragmentpageradapter
private class viewpageradapter extends fragmentpageradapter { private static final int num_fragments = 2; public viewpageradapter(fragmentmanager fm) { super(fm); } @override public fragment getitem(int position) { switch (position) { case 0: return allfeaturesfragment.newinstance(); case 1: return categoriesfragment.newinstance(); } return null; } @override public charsequence getpagetitle(int position) { switch (position) { case 0: return "all features"; case 1: return "categories"; } return null; } @override public int getcount() { return num_fragments; } }
any appreciated!
edit
it never occurred me check xml file answer, using style on tablayout element parent style "widget.appcompat.toolbar". reason style made titles invisible on marshmallow devices , none others. had remove style , worked fine!
i facing same issue. issue there issue in support library when hardcode tab tiles inside pager adapter. changed pager adapter this
class viewpageradapter extends fragmentpageradapter { private final list<fragment> mfragmentlist = new arraylist<>(); private final list<string> mfragmenttitlelist = new arraylist<>(); public viewpageradapter(fragmentmanager manager) { super(manager); } @override public fragment getitem(int position) { return mfragmentlist.get(position); } @override public int getcount() { return mfragmentlist.size(); } public void addfragment(fragment fragment, string title) { mfragmentlist.add(fragment); mfragmenttitlelist.add(title); } @override public charsequence getpagetitle(int position) { return mfragmenttitlelist.get(position); } } }
then can add fragment in activity this
public class mainactivity extends appcompatactivity { private toolbar toolbar; private tablayout tablayout; private viewpager viewpager; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); toolbar = (toolbar) findviewbyid(r.id.toolbar); setsupportactionbar(toolbar); getsupportactionbar().setdisplayhomeasupenabled(true); viewpager = (viewpager) findviewbyid(r.id.viewpager); setupviewpager(viewpager); tablayout = (tablayout) findviewbyid(r.id.tabs); tablayout.setupwithviewpager(viewpager); } private void setupviewpager(viewpager viewpager) { viewpageradapter adapter = new viewpageradapter(getsupportfragmentmanager()); adapter.addfragment(new onefragment(), "one"); adapter.addfragment(new twofragment(), "two"); adapter.addfragment(new threefragment(), "three"); viewpager.setadapter(adapter); } }
Comments
Post a Comment