トラッキング コード

2/12/2012

How to use Tab mode on ActionBar



ActionBar provide tab navigation which used Fragment System.

Proccess in Activity#onCreate
  1. Set Navigation Mode to ActionBar.
  2. Create tab that is used Action#newTab().
  3. Set TabListener with Fragment to show tab selected.

If you do not want to show Title and Icon, you need to call actionBar.setDisplayShowTitleEnabled(false) and actionBar.setDisplayShowHomeEnabled(false).

public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  // setContentView(R.layout.main);
  // setup action bar for tabs
  ActionBar actionBar = getActionBar();
  actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
  // hide Title and Icon
//  actionBar.setDisplayShowTitleEnabled(false);
//  actionBar.setDisplayShowHomeEnabled(false);

  Tab tab = actionBar.newTab();
  tab.setText("artist");
  tab.setTabListener(new TabListener(this, "artist", ArtistFragment.class) );
  actionBar.addTab(tab);

  tab = actionBar.newTab();
  tab.setText("album");
  tab.setTabListener(new TabListener(this, "album", AlbumFragment.class));
  actionBar.addTab(tab);

 }



Create TabListener with Fragment to show tab selected.

 private class TabListener implements
   ActionBar.TabListener {
  private Fragment mFragment;
  private final Activity mActivity;
  private final String mTag;
  private final Class 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 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.
  }
 }

Called the order

When Application launched,Called the order.
onCreate

onTabSelected of "artist"

ArtistFragment#onCreateView


Select Album Tab.
onTabUnselected of "artist"

onTabSelected of "album"

AlbumFragment#onCreateView


Reselect Album Tab.
onTabReselected of "album"

No comments:

Post a Comment