ActionBar provide tab navigation which used Fragment System.
Proccess in Activity#onCreate
- Set Navigation Mode to ActionBar.
- Create tab that is used Action#newTab().
- 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"