创建碎片
这里使用内部类的方式在Activity 中创建碎片作为选项卡的内容(使用外部的类也是可以的)。首先写好碎片的布局tab_content.xml,然后在Activity 中实现一个自己的TabContentFragment类继承Fragment:
private class TabContentFragment extends Fragment {
private String message;
public TabContentFragment(String message) {
this.message = message;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View fragView = inflater.inflate(R.layout.tab_content, container, false);
...
return fragView;
}
}
为了在Fragment 和选项卡之间建立联系,可以为Fragment 类定义一个私有成员message,用来保存选项卡信息,并在构造方法中初始化。
创建监听器
为了调用选项卡所需的回调函数,需要实现TabListener 接口,这里同样使用内部类的方式实现:
private class MyTabListener implements TabListener {
private TabContentFragment fragment;
public MyTabListener(TabContentFragment fragment) {
this.fragment = fragment;
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
ft.add(R.id.frame_layout, fragment);
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
ft.remove(fragment);
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
}
有三个回调函数,分别在选项卡被选中、取消选中、再次被选中的时候调用。这里主要使用前两个。
创建选项卡,设置监听器
首先获取到ActionBar 的实例,并设置ActionBar 的导航模式:
actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
调用ActionBar 的nerTab() 方法可以创建选项卡,然后可以为每个选项卡设置标题和监听器,然后再使用ActionBar 的addTab() 方法添加选项卡:
Tab tab = actionBar.newTab();
tab.setText(title);
tab.setTabListener(new MyTabListener(new TabContentFragment(title)));
actionBar.addTab(tab);
可以用相同的方法添加多个选项卡。
使用ActionBar 的removeTabAt() 方法可以删除特定位置的选项卡,下面的例子删除了最后一个选项卡:
actionBar.removeTabAt(actionBar.getTabCount() - 1);