Android学习笔记(三)--ActionBar Tab 的使用。
1. ActionBar可以现实选项卡供用户切换浏览该Activity中不同的Fragment
注:添加导航选项标签,必须给调用ActionBar的setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
2. 每个标签都可以是一个图标或文本标题
要使用选项标签在Fragmengt之间切换,必须在每次选择一个选项标签时执行一个Fragment事务。
添加选项标签的基本过程如下:
i. 实现ActionBar.TabListener接口。这个接口中回调方法会响应选项标签上的用户事件,以便你能够切换Fragment对象;
ii. 对于每个要添加的选项标签,都要实例化一个ActionBar.Tab对象,并且调用setTabListener()方法设置ActionBar.Tab对象的事件监听器。还可以用setText()或setIcon()方法来设置选项标签的标题或图标。
iii. 通过调用addTab()方法,把每个选项标签添加到操作栏。
1 protected void onCreate(Bundle savedInstanceState) { 2 3 super.onCreate(savedInstanceState); 4 setContentView(R.layout.manage_activity); 5 6 // 得到Activity的ActionBar 7 ActionBar actionBar = getSupportActionBar(); 8 // 设置AcitonBar的操作模型 9 actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 10 // 将Activity的头部去掉 11 actionBar.setDisplayShowTitleEnabled(true); 12 actionBar.setTitle("微画廊管理系统"); 13 // 生成Tab 14 Tab addnew = actionBar.newTab().setText("新增作品"); 15 Tab pplist = actionBar.newTab().setText("作品列表"); 16 Tab zclist = actionBar.newTab().setText("专场列表"); 17 // 为每个Tab添加Listener 18 MyTabListener addnewListener = new MyTabListener(new AddNewFragment()); 19 addnew.setTabListener(addnewListener); 20 MyTabListener pplistListener = new MyTabListener(new WebFragment(PPLIST)); 21 pplist.setTabListener(pplistListener); 22 MyTabListener zclisTabListener=new MyTabListener(new WebFragment(ZCLIST)); 23 zclist.setTabListener(zclisTabListener); 24 // 将Tab加入ActionBar中 25 actionBar.addTab(addnew); 26 actionBar.addTab(pplist); 27 actionBar.addTab(zclist); 28 }
在实现ActionBar.TabListener接口的类中,必须重写onTabSelected()、onTabUnselected()、onTabReselected()方法来关联Fragment,在这三个方法中实现Tab标签被选中、非选中、重新选中时是所需处理的事务操作。
public class MyTabListener implements TabListener { private Fragment fragment; public MyTabListener(Fragment fragment) { this.fragment = fragment; } public void onTabSelected(Tab tab, android.support.v4.app.FragmentTransaction ft) { ft.replace(R.id.manage_layout, fragment, null); } public void onTabUnselected(Tab tab, android.support.v4.app.FragmentTransaction ft) { ft.remove(fragment); } @Override public void onTabReselected(Tab arg0, android.support.v4.app.FragmentTransaction arg1) { } }