之前,我们学习的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开发相关文章

【转】 Pro Android学习笔记(五一):ActionBar(4):标准和Tab模式的更多相关文章

  1. Pro Android学习笔记 ActionBar(1):Home图标区

     Pro Android学习笔记(四八):ActionBar(1):Home图标区 2013年03月10日 ⁄ 综合 ⁄ 共 3256字 ⁄ 字号 小 中 大 ⁄ 评论关闭 ActionBar在A ...

  2. 【转】 Pro Android学习笔记(五二):ActionBar(5):list模式

    可以在action bar中加入spinner的下来菜单,有关spinner,可以参考Pro Android学习笔记(二十):用户界面和控制(8):GridView和Spinner. list的样式和 ...

  3. 【转】 Pro Android学习笔记(八二):了解Package(1):包和进程

    文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowingflying/ 在之前,我们已经学习了如何签发apk,见P ...

  4. 【转】 Pro Android学习笔记(六七):HTTP服务(1):HTTP GET

    目录(?)[-] HTTP GET小例子 简单小例子 出现异常NetworkOnMainThreadException 通过StrictMode进行处理 URL带键值对 Andriod应用可利用ser ...

  5. 【转】 Pro Android学习笔记(五五):调试和分析(3):adb命令、模拟器控制台和StrictMode

    目录(?)[-] adb命令 模拟器Console StrictMode adb命令 我们在学习SQLite的使用,介绍过部分adb命令的使用,见Pro Android学习笔记(五):了解Conten ...

  6. 【转】 Pro Android学习笔记(五六):配置变化

    目录(?)[-] Activity的destorycreate过程 Fragment的destorycreate过程 onSaveInstanceState saveFragmentInstanceS ...

  7. 【转】 Pro Android学习笔记(四二):Fragment(7):切换效果

    目录(?)[-] 利用setTransition 利用setCustomAnimations 通过ObjectAnimator自定义动态效果 程序代码的编写 利用fragment transactio ...

  8. 【转】 Pro Android学习笔记(四十):Fragment(5):适应不同屏幕或排版

    目录(?)[-] 设置横排和竖排的不同排版风格 改写代码 对于fragment,经常涉及不同屏幕尺寸和不同的排版风格.我们在基础小例子上做一下改动,在横排的时候,仍是现实左右两个fragment,在竖 ...

  9. 【转】 Pro Android学习笔记(三五):Menu(6):XML方式 & PopUp菜单

    目录(?)[-] 利用XML创建菜单 XML的有关属性 onClick事件 Pop-up菜单 利用XML创建菜单 在代码中对每个菜单项进行设置,繁琐且修改不灵活,不能适配多国语言的要求,可以利用资源进 ...

  10. 【转】 Pro Android学习笔记(三三):Menu(4):Alternative菜单

    目录(?)[-] 什么是Alternative menu替代菜单 小例子说明 Alternative menu代码 关于Category和规范代码写法 关于flags 多个匹配的itemId等参数 什 ...

随机推荐

  1. 【python】-- 深浅copy、集合

    深浅copy 1.数字.字符串的copy: 赋值(=).浅拷贝(copy)和深拷贝(deepcopy)其实都一样,因为它们永远指向同一个内存地址: >>> import copy & ...

  2. Django之CURD插件

    什么是CURD? CURD顾名思义就是create,update,rearch,delete(所谓的增删改查). 当我们接到一个项目的时候,夸夸夸的就写完表结构,然后就一直写增删改查,增删改查,写了一 ...

  3. JDBC详解2

    day18总结 今日思维导图: 今日内容 事务 连接池 ThreadLocal BaseServlet自定义Servlet父类(只要求会用,不要求会写) DBUtils à commons-dbuti ...

  4. Swift编程语言学习6—— 闭包

    闭包是自包括的函数代码块,能够在代码中被传递和使用. Swift 中的闭包与 C 和 Objective-C 中的代码块(blocks)以及其它一些编程语言中的 lambdas 函数比較类似.   闭 ...

  5. R语言读取Excel文档

    在R语言数据管理(三):数据读写一博文中,我曾写到有关读取xls.xlsx文件时一般将文档改成csv文件读取,这是一般做法.csv文件也有其缺点,修改较为麻烦,当文件数据较大时尤为明显.而生活中必不可 ...

  6. python基础4 ----字符编码

    python基础---字符编码 一.了解字符编码 1. 文本编辑器存取文件的原理(nodepad++,pycharm,word) 打开编辑器就打开了启动了一个进程,是在内存中的,所以在编辑器编写的内容 ...

  7. 《程序员代码面试指南》第二章 链表问题 将单链表每K个节点之间逆序

    样例 链表1-2-3-4-5-6-7-8-9-10 K=3 ,结果 3-2-1-6-5-4-9-8-7-10 java代码 /** * @Description:将单链表每K个节点之间逆序 * @Au ...

  8. python 3 并发编程多进程 paramiko 模块

    python 3 paramiko模块 paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,值得一说的是,fabric和ansible内部的远程管理就是使用的pa ...

  9. shell正则

    第五天 REGEXP:REGular EXPressionPattern: 正则表达式: Basic REGEXP:基本 Extended REGEXP:扩展 基本正则表达式: 字符匹配类:.: 任意 ...

  10. 使用vsftp搭建ftp服务

    第一步:安装vsftp pam db4 yum install vsftpd pam* db4*-y ================================================= ...