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

Post a Comment

Popular posts from this blog

Multi-Selection ListView ANDROID with CheckBox PART-2

Check Below Code : mainActivity.java package com.example.listviewcheckbox; import java.util.ArrayList; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.CheckBox; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity { private ListView listview; ArrayList<String> items = new ArrayList<String>(); private int count; private boolean[] thumbnailsselection; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(...

Android - Google MAP V2 PART 1

Download Full Code  of PART-1 , 2 , 3 , 4 Download and configure Google Play Services Library in Eclipse Google Map for Android is now integrated with Google Play Services. So we need to set up Google Play Service Library for developing Google Map application in Android. Get the API key for Google Maps v2: Linux  :  For any other OS use this :  keytool -list -v -alias androiddebugkey \ -keystore <path_to_debug_keystore>debug.keystore \ -storepass android -keypass android Register with the Google APIs Console :    Google APIs Console  Select here the  Services  entry: Activate the  Google Maps Android API v2 . Register your application via its package in this console together with the SHA-1 fingerprint of your signature key. Click on Create new Android Key.. Add you SHA-1 and your package name in to box like example given in alert box. Support library...

ANDROID - Adding ActionBar Navigation Tabs PART-2 (with GridView & MultipleSelection)

Download Code (Please ignore project folder name " AlarmManager ") Before Go Ahead Please Check PART-1 We have created TabFragment1 class in PART-1. I have just modify it. package com.AlarmManager; import android.content.Context; import android.database.Cursor; import android.graphics.Bitmap; import android.os.Bundle; import android.provider.MediaStore; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.View.OnClickListener; import android.widget.BaseAdapter; import android.widget.CheckBox; import android.widget.GridView; import android.widget.ImageView; import com.actionbarsherlock.app.SherlockFragment; public class TabFragment1 extends SherlockFragment { private GridView gridV; private int count; private Bitmap[] thumbnails; private boolean[] thumbnailsselection; private String[] arrPath; @Overri...