Showing posts with label actionbar tabs. Show all posts
Showing posts with label actionbar tabs. Show all posts

Saturday, May 25, 2013

ActionBar/ActionBarSherlock Tabs

Navigation Tabs:
ActionBar supports built-in Tabs or drop-down lists that you can use to change the Fragment is currently  visible. We are going to work with ActionBarSherlock library so we can have backwards compatibility.

Note 1 :  Either Tabs or drop-down lists but not both in ActionBar.
Note 2 :  Every Tab is associated with one Fragment. To change Fragments by using the Tabs,  perform a FragmentTransaction each time a Tab is selected.

Display Tabs :  



Add Tabs :

You can add Tabs with the addTab() method. The first Tab added is the selected one therefore the visible.
Code is like below :



Implement ActionBar.TabListener :

We 're going to split it into 3 parts :

  1. First part the implementation of the Fragments.
  2. Second part the implementation of ActionBar.TabListener 
  3. Third part is to add the Tabs using the TabListener we created before.
The result we expect is the screenshot below :




1) Fragments 
Fragment class is just a basic Fragment class in which we only inflate the layout :


And the corresponding XML layout :



We repeat this process for Fragment_2.

2) TabListener 
TabListener's implementation is the most difficult part of the work.



Our constructor is  public TabListener(Activity activity, String tag, Class<T> clz)  where activity is the host Activity, tag is the identifier Tag of the fragment and cls the Fragment's class so we can instantiate the fragment.

Callbacks in this Interface will handle the event. Specifically when a Tab is clicked then onTabSelected() will execute the Fragment transaction and add the fragment to the Activity.

In our case the Tab content will fill the activity's layout, so our activity doesn't needs a layout. Each fragment is placed in the default root ViewGroup, which we can refer to with the android.R.id.content ID.

3) MainActivity
Because we have to deal with Fragments our MainActivity  will extend FragmentActivity ( or just Activity for Android 3.0 and up ) but in our case with ActionBarSherlock will extend the SherlockFragmentActivity.





All we are doing here is to get the ActionBar item, and add Tabs with the addTab() method.
We set a TabListener for each Tab by calling the setTabListener().
Also we set the tab's title and/or icon with setText() and/or setIcon().

That's all ! Check all the code and/or fork the project from github here so you can see by yourself how it works.