Action to implement tab tags and to combine with fragment because to write news client this tab navigation is necessary here I write a few small exercises, I hope you can digest.
1actionbar setting tab +fragment
Layouts are a layout what layout can add an ID called container
PackageCom.example.demoforactionbar;ImportAndroid.app.ActionBar;Importandroid.app.Activity;Importandroid.app.Fragment;Importandroid.app.FragmentTransaction;ImportAndroid.os.Bundle;ImportAndroid.view.Menu;ImportAndroid.view.MenuItem; Public classMainactivityextendsActivityImplementsactionbar.tablistener{Private Static FinalString Selected_item = "Selected_item"; @Override Public voidonCreate (Bundle savedinstancestate) {Super. OnCreate (savedinstancestate); Setcontentview (R.layout.activity_main); FinalActionBar ActionBar =Getactionbar (); //to set Actionbar Navigation: Tab NavigationActionbar.setnavigationmode (Actionbar.navigation_mode_tabs); //add three tab pages, and add an event listener for three tab labelsActionbar.addtab (Actionbar.newtab (). SetText ("first page"). Settablistener ( This)); Actionbar.addtab (Actionbar.newtab (). SetText ("Second Page"). Settablistener ( This)); Actionbar.addtab (Actionbar.newtab (). SetText ("Third page"). Settablistener ( This)); } @Override Public voidonrestoreinstancestate (Bundle savedinstancestate) {if(Savedinstancestate.containskey (Selected_item)) {//Select the Fragment page for the previously saved indexGetactionbar (). Setselectednavigationitem (Savedinstancestate.getint (Selected_item)); }} @Override Public voidonsaveinstancestate (Bundle outstate) {//saves the index of the currently selected fragment page to the bundleOutstate.putint (Selected_item, Getactionbar (). Getselectednavigationindex ()); } @Override Public voidontabunselected (Actionbar.tab Tab, Fragmenttransaction fragmenttransaction) {}//fires this method when the specified tab is selected@Override Public voidontabselected (Actionbar.tab Tab, fragmenttransaction fragmenttransaction) {//to create a new fragment objectFragment Fragment =Newdummyfragment (); //creates a bundle object for passing parameters to the fragmentBundle args =NewBundle (); Args.putint (Dummyfragment.arg_section_number, tab.getposition ()+ 1); //passing parameters to fragmentfragment.setarguments (args); //Get Fragmenttransaction ObjectFragmenttransaction ft =Getfragmentmanager (). BeginTransaction (); //use fragment instead of the container component in the activityFt.replace (R.id.container, fragment); //Commit a transactionFt.commit (); } @Override Public voidontabreselected (Actionbar.tab Tab, Fragmenttransaction fragmenttransaction) {}}
Fragment
PackageCom.example.demoforactionbar;Importandroid.app.Fragment;ImportAndroid.os.Bundle;Importandroid.view.Gravity;ImportAndroid.view.LayoutInflater;ImportAndroid.view.View;ImportAndroid.view.ViewGroup;ImportAndroid.widget.TextView; Public classDummyfragmentextendsFragment { Public Static FinalString arg_section_number = "Section_number"; //The return value of the method is the view component displayed by the fragment@Override PublicView Oncreateview (layoutinflater inflater, ViewGroup container, Bundle savedinstancestate) {TEXTV Iew TextView=NewTextView (Getactivity ()); Textview.setgravity (gravity.center_horizontal); //Gets the parameter bundle passed in when the fragment was createdBundle args =getarguments (); //set the text displayed TextViewTextview.settext (Args.getint (arg_section_number) + ""); Textview.settextsize (30); //return to the TextView returnTextView; } }
2. Viewpager + Pagertopstrip
Xml:
<?xml version= "1.0" encoding= "Utf-8"?><Android.support.v4.view.ViewPager xmlns:android= "Http://schemas.android.com/apk/res/android"Android:id= "@+id/pager"Android:layout_width= "Match_parent"Android:layout_height= "Match_parent" > <!--define navigation status bar components---<Android.support.v4.view.PagerTitleStrip android:layout_width= "Match_parent"Android:layout_height= "Wrap_content"android:layout_gravity= "Top"Android:background= "#33b5e5"Android:textcolor= "#fff"Android:paddingtop= "4DP"Android:paddingbottom= "4DP"/></android.support.v4.view.viewpager>
Mainactivity:
PackageCom.example.demoforactionbar;ImportAndroid.app.ActionBar;Importandroid.app.Activity;Importandroid.app.FragmentTransaction;ImportAndroid.os.Bundle;Importandroid.support.v4.app.Fragment;Importandroid.support.v4.app.FragmentActivity;ImportAndroid.support.v4.app.FragmentPagerAdapter;ImportAndroid.support.v4.view.ViewPager;ImportAndroid.view.Menu;ImportAndroid.view.MenuItem; Public classMainactivityextendsfragmentactivityImplementsactionbar.tablistener{Viewpager Viewpager; ActionBar ActionBar; @Override Public voidonCreate (Bundle savedinstancestate) {Super. OnCreate (savedinstancestate); Setcontentview (R.layout.activity_main); //Get Actionbar ObjectActionBar =Getactionbar (); //Get ViewpagerViewpager =(Viewpager) Findviewbyid (R.id.pager); //creates a Fragmentpageradapter object that is responsible for providing multiple fragment for ViewpagerFragmentpageradapter Pageradapter =NewFragmentpageradapter (Getsupportfragmentmanager ()) {//get fragment of location position@Override PublicFragment GetItem (intposition) {Fragment Fragment=Newdummyfragment (); Bundle args=NewBundle (); Args.putint (dummyfragment.arg_section_number, Position+ 1); Fragment.setarguments (args); returnfragment; } //The return value I of this method indicates how many fragment the adapter total includes@Override Public intGetCount () {return3; } //The return value of the method determines the title of each fragment@Override PublicCharsequence Getpagetitle (intposition) { Switch(position) { Case0: return"First Page"; Case1: return"Second Page"; Case2: return"Third page"; } return NULL; } }; //setting Actionbar using the tab navigation methodActionbar.setnavigationmode (Actionbar.navigation_mode_tabs); //traverse all fragment contained by the Pageradapter object//Create a tab label for each fragment for(inti = 0; I < Pageradapter.getcount (); i++) {Actionbar.addtab (Actionbar.newtab (). SetText (Pageradapter.getpagetitle (i)) . Settablistener ( This)); } //set Fragmentpageradapter for Viewpager componentsViewpager.setadapter (Pageradapter);//①//to bind an event listener to a Viewpager componentViewpager.setonpagechangelistener (NewViewpager.simpleonpagechangelistener () {//This method is fired when the fragment of the Viewpager display changes@Override Public voidOnpageselected (intposition) {Actionbar.setselectednavigationitem (position); } }); } @Override Public voidontabunselected (Actionbar.tab Tab, Fragmenttransaction fragmenttransaction) {}//fires this method when the specified tab is selected@Override Public voidontabselected (Actionbar.tab Tab, fragmenttransaction fragmenttransaction) {Viewpager.setcurrentite M (Tab.getposition ()); //②} @Override Public voidontabreselected (Actionbar.tab Tab, Fragmenttransaction fragmenttransaction) {}}
Dummyfragment the parent package into the V4 package can be changed without error
Public class extends android.support.v4.app.Fragment
Several methods of Android tab navigation: ActionBar tab +FRAGMENT,VIEWPAGER+PAGERTITLESTRIP, open source framework Viewpageindicator and Viewpager