添加导航选项卡
要使用选项卡切换片段,必须在每次选择选项卡时执行片段事务。
布局必须包含一个ViewGroup,其中每个Fragment与标签相关联。
添加选项卡的基本步奏:
1. 实现ActionBar.TabListener界面。此界面中的回调响应选项卡的用户事件,以便交换片段。
2. 对于要添加的每个选项卡,实例化ActionBar.Tab并ActionBar.TabListener通过调用设置setTabListener()。还可以使用setText()和setIcon()设置便签的标题和图标。
3. 通过调用将每个选项卡添加到操作栏addTab()
public static class TabListener implements ActionBar.TabListener{
private Fragment fragment;
private final Activity activity;
private final String tag;
private final Class mclass;
public TabListener(Activity activity,String tag,Class mclass){
this.activity = activity;
this.tag = tag;
this.mclass = mclass;
}
@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
if(fragment == null){
fragment = Fragment.instantiate(activity,mclass.getName());
ft.add(android.R.id.content,fragment,tag);
}else {
ft.attach(fragment);
}
}
@Override
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {
if(fragment != null){
ft.detach(fragment);
}
}
@Override
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {
}
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActionBar actionBar = getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.setDisplayShowTitleEnabled(true);
actionBar.setTitle("音乐播放器");
actionBar.setIcon(R.drawable.sousuo);
actionBar.setDisplayHomeAsUpEnabled(false);
ActionBar.Tab tab = actionBar.newTab()
.setText("本地音乐")
.setTabListener(new TabListener(this,"fragemnt",Fragment.class));
actionBar.addTab(tab);
tab = actionBar.newTab()
.setText("网络搜索")
.setTabListener(new TabListener(this,"fragemnt",Fragment.class));
actionBar.addTab(tab);
}
效果图: