之前,我们学习的Action Bar是标准模式,Tab模式的如下图所示。

对于Tab,我们在Android学习笔记(二二): 多页显示-Tag的使用中学习过,但Action Bar的tab更适合fragment的使用。我们在之前实现的标准Action Bar的基础上添加导航用的tab,代码如下:

public class TabbedActionBarDemo extends SearchTestCase3 implements ActionBar.TabListener{
    @Override 
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState); 
        workWithTabbedActionBar(); 
    } 
    private void workWithTabbedActionBar(){ 
        ActionBar bar = getActionBar(); 
        bar.setTitle("Tabbed action bar"); //可以修改在AndroidManifest.xml中设定的action bar的title
        bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); //缺省为ActionBar.NAVIGATION_MODE_STANDARD,即标准模式。在标准模式下,是不呈现Tab出来的。

ActionTab.Tab tab1 = bar.newTab()
        tab1.setText("Tab1"); 
        tab1.setTabListener(this);  //如果我们忘了添加setTabListener(),在运行时会异常,设置null也不行。
        bar.addTab(tab1);

bar.addTab(bar.newTab() 
                           .setText("Tab2")  
                           .setTabListener(this)); 

    }

@Override //ActionBar.TabListener接口,在已选择的基础上,再次选择的回调函数
    public void onTabReselected(Tab tab, FragmentTransaction ft) 
        showInfo(tab.getText() + " onTabReselected() is called");       
    }

@Override //ActionBar.TabListener接口,选择tab的回调函数。目前为Tab1,当用户选择tab2时,先触发tab1的onTabUnselected(),再触发tab2的onTableSelected()
    public void onTabSelected(Tab tab, FragmentTransaction ft) {
        showInfo(tab.getText() + " onTabSelected() is called");      
    }

@Override //ActionBar.TabListener接口,不再选择(选择其他)的回调函数
    public void onTabUnselected(Tab tab, FragmentTransaction ft) { 
        showInfo(tab.getText() + " onTabUnselected() is called");
    }  
        
}

ActionBar.Tab很适合用于fragment,在不同的fragment中切换,此时,具体实现ActionBar.TabListener的可能就是Fragment的继承类。

本博文涉及的例子代码,可以在Pro Android学习:ActionBar小例子中下载。

相关链接: 我的Android开发相关文章

最新文章

  1. android 永不关闭toast
  2. Protocol Buffers介绍
  3. fatal error C1854: 无法覆盖在创建对象文件.obj”的预编译头过程中形成的信息
  4. ogre入门笔记
  5. centos 7.0防火墙导致vagrant端口映射失败
  6. Hessian Servlet和Hessian Spring的简单应用
  7. Windows NT 之父 - David Cutler
  8. 自制操作系统Antz(7)——实现内核 (上)
  9. HttpWebRequest post 请求超时问题
  10. CentOS中利用Docker安装Redis
  11. Python3 tkinter基础 Listbox Scrollbar 创建垂直滚动条
  12. centos nginx 中安装ssl证书 以及在项目中的使用
  13. Go语言实战 (William,Kennedy 等著)
  14. Handle( )
  15. z-index的堆叠规则
  16. Xilinx之RAM使用指南
  17. 文本框改变之onpropertychange事件
  18. Oracle与MySQL连接配置
  19. linux命令之系统管理命令(上)
  20. sg函数总结

热门文章

  1. Netty环境搭建 (源码死磕2)
  2. php解析xml文件为数组
  3. JavaScript-Confirm用法
  4. 'gbk' codec can't encode character '\xa0' in position 34: illegal multibyte sequence
  5. CALL TRANSFORMATION 的方法生成XML文件
  6. 【学习】Spring 的 AOP :基于Annotation 的“零配置”方式
  7. Intel IPP 图像空间转换
  8. windows中检查端口占用
  9. Elasticsearch for python API模块化封装
  10. c++之helloworld与命名空间