requirement
: fragment should provide actionbar tabs after calling through mainactivity
problem facing
: after calling fragment, actionbar tabs gets invisible after showing 1-2 secs.
here fragment:
public class tabfragment extends fragment implements actionbar.tablistener{ sectionspageradapter msectionspageradapter; viewpager mviewpager; public static tabfragment newinstance() { return new tabfragment(); } @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); } @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { view v = inflater.inflate(r.layout.testtab, container, false); msectionspageradapter = new sectionspageradapter( getchildfragmentmanager()); mviewpager = (viewpager) v.findviewbyid(r.id.pagertest); mviewpager.setadapter(msectionspageradapter); final actionbar actionbar = ((mainactivity)getactivity()).getsupportactionbar(); actionbar.setnavigationmode(actionbar.navigation_mode_tabs); mviewpager.setonpagechangelistener(new viewpager.simpleonpagechangelistener() { @override public void onpageselected(int position) { actionbar.setselectednavigationitem(position); } }); // each of sections in app, add tab action bar. (int = 0; < msectionspageradapter.getcount(); i++) { // create tab text corresponding page title defined // adapter. specify activity object, implements // tablistener interface, callback (listener) when // tab selected. actionbar.addtab( actionbar.newtab() .settext(msectionspageradapter.getpagetitle(i)) .settablistener(this)); } return v; } @override public void ontabselected(actionbar.tab tab, fragmenttransaction fragmenttransaction) { mviewpager.setcurrentitem(tab.getposition()); } @override public void ontabunselected(actionbar.tab tab, fragmenttransaction fragmenttransaction) { } @override public void ontabreselected(actionbar.tab tab, fragmenttransaction fragmenttransaction) { } public class sectionspageradapter extends fragmentpageradapter { public sectionspageradapter(fragmentmanager fm) { super(fm); } @override public fragment getitem(int position) { // getitem called instantiate fragment given page. // return placeholderfragment (defined static inner class below). return placeholderfragment.newinstance(position + 1); } @override public int getcount() { // show 3 total pages. return 3; } @override public charsequence getpagetitle(int position) { locale l = locale.getdefault(); switch (position) { case 0: return getstring(r.string.title_section1).touppercase(l); case 1: return getstring(r.string.title_section2).touppercase(l); case 2: return getstring(r.string.title_section3).touppercase(l); } return null; } } /** * placeholder fragment containing simple view. */ public static class placeholderfragment extends fragment { /** * fragment argument representing section number * fragment. */ private static final string arg_section_number = "section_number"; /** * returns new instance of fragment given section * number. */ public static placeholderfragment newinstance(int sectionnumber) { placeholderfragment fragment = new placeholderfragment(); bundle args = new bundle(); args.putint(arg_section_number, sectionnumber); fragment.setarguments(args); return fragment; } public placeholderfragment() { } @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { view rootview = inflater.inflate(r.layout.testtab1, container, false); return rootview; } }
}
how actionbar implement tabs in fragment? implemented getsupportactionbar
in oncreateview()
. stuck here whole day. suggestion doing wrong here??
note
: pagertabstrip
working nicely want actionbar tabs
edit
want app support gingerbread
too
i recommend using toolbar slidingtablayout appcompat v21+ easy implementation.