actionBar的tab标签应用以及TabListener的方法详解

package com.example.actionBarTest.actionBarTab;

import android.app.*;
import android.os.Bundle;
import com.example.actionBarTest.R;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by Heyiyong on 2014-5-2 上午9:26.
 */
public class TabActivity extends Activity implements ActionBar.TabListener {
    private List<Fragment> fragments;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tab_main);

        //这些都是普通的fragment,里边只包含一个textView
        HomeFragment homeFragment = new HomeFragment();
        MusicFragment musicFragment = new MusicFragment();
        VideoFragment videoFragment = new VideoFragment();
        fragments = new ArrayList<Fragment>();
        fragments.add(homeFragment);
        fragments.add(musicFragment);
        fragments.add(videoFragment);

        ActionBar actionBar = getActionBar();
        if (actionBar != null) {
            //设置actionBar为tabs模式
            actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
            //添加几个标签,并设置点击监听事件
            actionBar.addTab(actionBar.newTab().setText("主页").setTabListener(this));
            actionBar.addTab(actionBar.newTab().setText("音乐").setTabListener(this));
            actionBar.addTab(actionBar.newTab().setText("视频").setTabListener(this));
        }

    }

    /**
     * 当一个标签被选择的时候会调用该方法
     * @param tab 点击选择的标签
     */
    @Override
    public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
        getFragmentManager().beginTransaction().replace(R.id.tab_main, fragments.get(tab.getPosition())).commit();
    }

    /**
     * 当你选择了另外一个标签,之前的标签就会被unselected,于是这个方法就会被调用
     * 例如,你当前的标签下标为0,现在选择了下标为1的标签,那么这个方法会调用,并且传入的参数tab是原先的标签对象
     * @param tab 原先的标签对象
     */
    @Override
    public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {
        System.out.println("onTabUnselected Position = " + tab.getPosition());
    }

    /**
     * 重复选择当前的标签,会调用此方法。
     * 例如:当前标签为第二个,当你用手指又点了第二个,就会调用此方法
     * @param tab 当前的标签对象
     */
    @Override
    public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {
        System.out.println("onTabReselected position = " + tab.getPosition());
    }
}

Android ActionBar 关于tab的应用 以及 TabListener的方法详解的更多相关文章

  1. [转]Android调用so文件(C代码库)方法详解

    一.为什么调用c的dll要用源码编译成so库 Android系统是基于linux内核的移动终端系统,而dll是在windows环境下生成和调用的c库,所以不可以直接为android系统调用. 二.安装 ...

  2. Android四大组件之——Activity的生命周期(图文详解)

        转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai       联系方式:JohnTsai.Work@gmail.com       [Andro ...

  3. Android源码下载方法详解

    转自:http://www.cnblogs.com/anakin/archive/2011/12/20/2295276.html Android源码下载方法详解 相信很多下载过内核的人都对这个很熟悉 ...

  4. Android ActionBar通过Tab进行不同的Fragment之间的交换

    ActionBar的使用常见于4.0系统,其Tab的使用挺广泛的. 在ActionBar中添加标签(Tabs),每个标签对应的是一个Fragment,点击不同的Tab时,就会切换到对应的Fragmen ...

  5. Android下实现tab页个人比较推崇的方法

    使用fragment实现tab页的效果: 三个页面是单独的三个Fragment 主Activity的实现: package com.hsx.tab; import android.os.Bundle; ...

  6. android开发之onCreate( )方法详解

    这里我们只关注一句话:This is where you should do all of your normal static set up.其中我们只关注normal static,normal: ...

  7. 【转载】 Android PullToRefresh (ListView GridView 下拉刷新) 使用详解

    Android下拉刷新pullToRefreshListViewGridView 转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/3 ...

  8. android MediaPlayer API大全已经方法详解(转载)

    通过这张图,我们可以知道一个MediaPlayer对象有以下的状态: 1)当一个MediaPlayer对象被刚刚用new操作符创建或是调用了reset()方法后,它就处于Idle状态.当调用了rele ...

  9. Android 5.0 如何正确启用isLoggable(一)__使用详解

    转自:http://blog.csdn.net/yihongyuelan/article/details/46409389 isLoggable是什么 在Android源码中,我们经常可以看到如下代码 ...

随机推荐

  1. text-shadow文字阴影属性用法

    text-shadow:offset-x:阴影水平移动,负值时向左偏移 text-shadow:offset-y:阴影垂直移动,负值时向上移动 text-shadow:radio-bluer:阴影到实 ...

  2. openwrt-智能路由器hack技术(2)---&quot;网路信息监控和窃取&quot;

    openwrt-智能路由器hack技术(2)---"网路信息监控和窃取" 1   导读 PS:之前写的一个文章,现在发现结构内容排版不是太好,导致阅读体验太差,影响传播和SEO,所 ...

  3. Ubuntu下安装Naginx, PHP5(及PHP-FPM),MySQL

    一:安装前做个简单的说明 二:安装MySQL 三:安装Nginx 四:安装PHP5 五:配置 nginx,以下是我本机的配置文件. 六:让MySQL支持PHP5 七:配置PHP-FPM 八:在/etc ...

  4. SPL--spl_autoload_register

    spl_autoload_register() : 调用未定义类时,系统会按顺序调用注册到spl_autoload_register()函数的所有函数,而不是调用__autoload函数. 解决问题: ...

  5. Eclipse *下载

    简单了解,Eclipse是绿色软件,下载下来是个压缩包,只需要解压,加上jdk就可以运行了. 相比MyEclipse而言,它是免费的,后者是收费的.各有侧重吧 有很多人用Eclipse,也有很多人用M ...

  6. POJ 3349 Snowflake Snow Snowflakes

    Snowflake Snow Snowflakes Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 27598 Accepted: ...

  7. Gitlab. Disable user creation on welcome page

    Login to your Gitlab > Admin area > settings > Features > remove the check mark "Si ...

  8. 自适应游标共享技术01(Adaptive Cursor Sharing)

    什么是ACS(adaptiver cursor sharing) Oracle通过绑定变量技术解决了SQL语句硬解析过多的问题,降低了资源的争用.但是绑定变量在引入cursor sharing,增加了 ...

  9. Agile.Net 组件式开发平台 - 系统文档中心

    Agile.Debgu.exe 文件为平台文档中心应用程序,该程序集成了数据库结构文档查询.数据库结构文档浏览.实时系统日志监控等功能.  数据库结构文档浏览 数据库结构文档查询 系统平台日志监控

  10. 关于 mysqladmin

    >mysqladmin 工具的使用格式: mysqladmin [option] command [command option] command ...... option 选项: -c nu ...