Skip to main content

ANDROID - Adding ActionBar Navigation Tabs




Note: if you are develop App < 3.0 Android OS then use ActionBarSherlock  support library.


ActionBarSherlock is an extension of the support library designed to facilitate the use of the action bar design pattern across all versions of Android with a single API.


Create new Android Project : in Main Activity



 package com.AlarmManager;  
 import android.os.Bundle;  
 import android.view.View;  
 import com.actionbarsherlock.app.ActionBar;  
 import com.actionbarsherlock.app.ActionBar.Tab;  
 import com.actionbarsherlock.app.SherlockFragmentActivity;  
 public class AlarmManagerActivity extends SherlockFragmentActivity {  
      public static String ACTIVE_TAB = "activeTab";  
      /** Called when the activity is first created. */  
      @Override  
      public void onCreate(Bundle savedInstanceState) {  
           setTheme(R.style.Theme_Sherlock_Light_DarkActionBar);  
           super.onCreate(savedInstanceState);  
           // setContentView(R.layout.main);  
           final ActionBar actionBar = getSupportActionBar();  
           actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);  
           // add tabs  
           Tab tab1 = actionBar  
                     .newTab()  
                     .setText("Tab1")  
                     .setTabListener(  
                               new TabListener<TabFragment>(this, "tab1",  
                                         TabFragment.class));  
           actionBar.addTab(tab1);  
           Tab tab2 = actionBar  
                     .newTab()  
                     .setText("Tab2")  
                     .setTabListener(  
                               new TabListener<TabFragment1>(this, "tab2",  
                                         TabFragment1.class));  
           actionBar.addTab(tab2);  
           // check if there is a saved state to select active tab  
           if (savedInstanceState != null) {  
                getSupportActionBar().setSelectedNavigationItem(  
                          savedInstanceState.getInt(ACTIVE_TAB));  
           }  
      }  
      @Override  
      protected void onSaveInstanceState(Bundle outState) {  
           // save active tab  
           outState.putInt(ACTIVE_TAB, getSupportActionBar()  
                     .getSelectedNavigationIndex());  
           super.onSaveInstanceState(outState);  
      }  
 }  

Create TabListener Class:

 package com.AlarmManager;  
 import android.app.Activity;  
 import android.support.v4.app.Fragment;  
 import android.support.v4.app.FragmentTransaction;  
 import com.actionbarsherlock.app.ActionBar;  
 import com.actionbarsherlock.app.ActionBar.Tab;  
 public class TabListener<T extends Fragment> implements ActionBar.TabListener {  
   private Fragment mFragment;  
   private final Activity mActivity;  
   private final String mTag;  
   private final Class<T> mClass;  
   /** Constructor used each time a new tab is created.  
    * @param activity The host Activity, used to instantiate the fragment  
    * @param tag The identifier tag for the fragment  
    * @param clz The fragment's Class, used to instantiate the fragment  
    */  
   public TabListener(Activity activity, String tag, Class<T> clz) {  
     mActivity = activity;  
     mTag = tag;  
     mClass = clz;  
   }  
   /* The following are each of the ActionBar.TabListener callbacks */  
   public void onTabSelected(Tab tab, FragmentTransaction ft) {  
     // Check if the fragment is already initialized  
     if (mFragment == null) {  
       // If not, instantiate and add it to the activity  
       mFragment = Fragment.instantiate(mActivity, mClass.getName());  
       ft.add(android.R.id.content, mFragment, mTag);  
     } else {  
       // If it exists, simply attach it in order to show it  
       ft.attach(mFragment);  
     }  
   }  
   public void onTabUnselected(Tab tab, FragmentTransaction ft) {  
     if (mFragment != null) {  
       // Detach the fragment, because another one is being attached  
       ft.detach(mFragment);  
     }  
   }  
   public void onTabReselected(Tab tab, FragmentTransaction ft) {  
     // User selected the already selected tab. Usually do nothing.  
   }  
 }  

Create TabFragment class:

 package com.AlarmManager;  
 import android.os.Bundle;  
 import android.view.LayoutInflater;  
 import android.view.View;  
 import android.view.ViewGroup;  
 import com.actionbarsherlock.app.SherlockFragment;  
 public class TabFragment extends SherlockFragment {  
      @Override  
      public View onCreateView(LayoutInflater inflater, ViewGroup container,  
                Bundle savedInstanceState) {  
           // Inflate the layout for this fragment  
           View view = inflater  
                     .inflate(R.layout.main, container, false);  
           // do your view initialization here  
           return view;  
      }  
 }  

main.xml layout file:

 <?xml version="1.0" encoding="utf-8"?>  
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
   android:layout_width="fill_parent"  
   android:layout_height="fill_parent"  
   android:gravity="center"  
   android:orientation="vertical" >  
   <TextView  
     android:id="@+id/textView1"  
     android:layout_width="match_parent"  
     android:layout_height="wrap_content"  
     android:gravity="center"  
     android:text="Tab1"  
     android:textAppearance="?android:attr/textAppearanceLarge" />  
   <Button  
     android:id="@+id/button1"  
     android:layout_width="wrap_content"  
     android:layout_height="wrap_content"  
     android:text="Button" >  
   </Button>  
 </LinearLayout>  

Same as TabFragment class i have used TabFragment1 class with two button.

Enjoy Coding..

Comments

  1. Hello sir

    can u tel me how to add libraries

    ReplyDelete
  2. I already have the support libraries installed and i have the "libs" folder in the project

    But stil i'm getting errors...

    ReplyDelete
  3. Please tell me what error you get..

    Please do this:

    Select Java Build Path, and click the Libraries tab.
    Click Add External JARs, browse to /extras/android/support/v4/android-support-v4.jar. Click OK
    On the Order and Export tab, select android-support-v4.jar.
    Click OK.

    if you already done this then check if your sharelock library have android-support-v4.jar then delete it from your project not from sharelock library.

    ReplyDelete
  4. How to use the buttons inside the tab to do some actions ?

    ReplyDelete

Post a Comment

Popular posts from this blog

Android Material Design (with Design support Library) - 4

Introducing  Design Support Library  , to use Material design component in older version API - android 2.1 and above.  You’ll find a navigation drawer view, floating labels for editing text, a floating action button, snackbar, tabs, and a motion and scroll framework to tie them together. I have used my previous example, so its easy for demonstrate.  Note: Update your Android SDK support  repositories, support library if not updated i  used compileSdkVersion 'android-MNC' for Android M but you can change it to build in older API add  dependencies in build.gradle file compile 'com.android.support:appcompat-v7:22.2.0' compile 'com.android.support:design:22.2.0' compile 'com.android.support:support-v4:22.2.0' start with  navigation drawer , its very easy to use lets, design for drawer <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://

Android show Data from Sqlite DB into Grid View

Shaadi.com Matrimonials Shaadi.com Indian Matrimonials Your Main Activity class package com . Sqlite_grid_view ; import java . util . ArrayList ; import java . util . List ; import android . app . Activity ; import android . os . Bundle ; import android . util . Log ; import android . view . View ; import android . widget . AdapterView ; import android . widget . AdapterView . OnItemClickListener ; import android . widget . ArrayAdapter ; import android . widget . GridView ; import android . widget . TextView ; import android . widget . Toast ; public class AndroidSQLiteTutorialActivity extends Activity { private GridView gridView ; public static ArrayList < String > ArrayofName = new ArrayList < String >(); /** Called when the activity is first created. */ @ Override public void onCreate ( Bundle savedInstanceState ) { super . onCreate ( savedInstanceState ); setContentView ( R . l