2012-08-11 01:43 5209人阅读 评论(0) 收藏 举报

最近在项目中遇到点击tabhost里的tab项时做出监听,注意不是onTabChanged(String str)的监听,因为该监听是只有当你切换tab时才会发生动作事件。

TabHost的使用:

1:首先定义tabhost的布局

  1. <TabHost
  2. android:id="@android:id/tabhost"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. >
  6. <LinearLayout
  7. android:layout_width="fill_parent"
  8. android:layout_height="wrap_content"
  9. android:orientation="vertical" >
  10. <TabWidget
  11. android:id="@android:id/tabs"
  12. android:layout_width="wrap_content"
  13. android:layout_height="50dp"
  14. />
  15. FrameLayout
  16. android:id="@android:id/tabcontent"
  17. android:layout_width="fill_parent"
  18. android:layout_height="fill_parent"
  19. android:background="@android:color/transparent"
  20. />
  21. </LinearLayout>
  22. </TabHost>

这样你有了布局,

接下来,让你的类继承TabActivity,然后定义成员变量:

  1. private TabHost mTabHost;
  2. private TabWidget mTabWidget;

接着在OnCreate()里面进行初始化,

  1. mTabHost = getTabHost();
  2. mTabHost.setup(getLocalActivityManager());
  3. mTabWidget = mTabHost.getTabWidget();

然后进行setTab1(),setTab2()······

  1. mTabHost.setOnTabChangedListener(this);
  2. setTab(TAB_1, true);
  3. //默认设置第一个选项卡

setTab1()方法就是创建新的标签tab代码如下:

  1. private void setTab1() {
  2. View view = mInflater.inflate(R.layout.xxx, null);
  3. ((TextView) view.findViewById(R.id.x)).setText(getResources()
  4. .getString(R.string.tab_forum_1));
  5. Intent newsList = new Intent(this, AAAivity.class);
  6. TabSpec mTabSpec1 = mTabHost.newTabSpec(getResources().getString(
  7. R.string.tab_forum_1));
  8. mTabSpec1.setIndicator(view);
  9. mTabSpec1.setContent(newsList);
  10. mTabHost.addTab(mTabSpec1);
  11. }

setTab(TAB_1,true);方法其中里面的TAB_1=1;

该方法为:监听测试为点击第二个tab选项卡时出现点击事件。

  1. private void setTab(int id, boolean flag) {
  2. switch (id) {
  3. case TAB_1:
  4. mTabWidget.getChildAt(TAB_1).setBackgroundResource(R.drawable.select_group_bg2);
  5. abWidget.getChildAt(TAB_2).setBackgroundDrawable(null);
  6. case TAB_2:
  7. mTabWidget.getChildAt(TAB_2).setOnClickListener(new OnClickListener() {
  8. @Override
  9. public void onClick(View v) {
  10. if (mTabHost.getCurrentTab() != TAB_2) {//一定要判断这个是为了防止阻碍切换事件
  11. mTabHost.setCurrentTab(TAB_2);
  12. }else{
  13. //做你要做的事情
  14. }
  15. }
  16. });
  17. mTabWidget.getChildAt(TAB_1).setBackgroundDrawable(null);
  18. }

好了,接着写onTabChanged(String tabId)方法

  1. if (tabId.equalsIgnoreCase(getResources().getString(
  2. R.string.tab_forum_1))) {
  3. setTab(TAB_1, true);
  4. } else if (tabId.equalsIgnoreCase(getResources().getString(
  5. R.string.tab_forum_2))) {
  6. setTab(TAB_2, true);
  7. }
  8. }

好了监听已经实现。

给tabhost加上点击监听,不是onTabChanged(String)监听的更多相关文章

  1. vue 侦听器watch 之 深度监听 deep

    <template> <div> <p>FullName: {{person.fullname}}</p> <p>FirstName: &l ...

  2. 问题1:Oracle数据库监听启动失败(重启监听,提示The listener supports no services)

    编辑监听文件:/home/DB/oracle/11gR2/db/network/admin/listener.ora 在文件内添加静态监听实例,如下内容: SID_LIST_LISTENER =(SI ...

  3. 监听程序未启动或数据库服务未注册到该监听程序。启动该监听程序并注册数据库服务 然后重新运行 em configuration assistant。

    在WIN 7/64Bit上安装ORACLE 11gR2后,管理网页Database Control(如:https://localhost:1158/em)始终登录不进去,总是说密码错误,使用配置工具 ...

  4. 2017云计算开源峰会 你是想听Linux谈开源还是想听OpenStack谈开源?

    2017年,善于把握机遇的企业们不是正在开源,就是走在去开源的路上-- 开源是不是就意味着免费? 开源企业就是要当"活雷锋"? 开源项目究竟如何运作?如何参与开源社区? 如何获得最 ...

  5. 移动端控制视频点击播放点击下一个视频时自动停止播放&监听滑动溢出屏幕高度时停止播放

    直接上代码js部分: <script type="text/javascript"> var go;//记录video播放器位置 var video=document. ...

  6. Android点击Button按钮的四种事件监听方法总结

    首先我们在activity_main.xml里面先定义一个Button空间 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <RelativeLayout xmlns:a ...

  7. Android开发 ---基本UI组件2:图像按钮、单选按钮监听、多选按钮监听、开关

    Android开发 ---基本UI组件2 1.activity_main.xml 描述: 定义一个按钮 <?xml version="1.0" encoding=" ...

  8. 实时监听input标签输入 实时监听文本框输入 避免中文输入法无法触发onkeyup事件的问题

    前言: 对于实时监听输入,这种需求大多数都是用于一个联想字提醒,智能提醒.大家都知道onkeydown,onkeypress,onkeyup的在监听中文输入法或者右键粘贴的时候都存在一些弊端,不是那么 ...

  9. Oracle 数据库监听无法连接上、监听HANG住、监听无响应、TNS-12560

    环境: Windows server 2003 Oracle 11.2.0.1 问题: 一套老数据库在运行了很久后,突然就连接不上了,提示监听异常. 处理: 1.CMD命令行检查监听状态:无监听 2. ...

随机推荐

  1. TimescaleDB 简单试用

    TimescaleDB 是一个对于pg进行了改造的时序数据库 安装测试使用docker 安装&&运行 docker run -d --name timescaledb -p 5432: ...

  2. open_input_file函数调用结构图(转)

    open_input_file函数调用结构图(有些重复的函数调用就略掉了,大致是按流程往下的). 函数大致说明: AVFormatContext *avformat_alloc_context(voi ...

  3. 简单遗传算法-python实现

    ObjFunction.py import math def GrieFunc(vardim, x, bound): """ Griewangk function &qu ...

  4. WebKit的已实施srcset图像响应属性

    WebKit已经发布了一些官方新闻,终于落实srcset的属性.作为W3C的响应图像社区组的主席,我一直希望这一刻到来有一段时间了.所以,对所有参与方是个好消息,用户浏览网页时的体验是最重要的. 所有 ...

  5. VS2017 Linux C++引用自定义的动态库

    前一篇博客讲了用系统库libpthread.so的例子,只需要在项目属性页的[C++->命令行参数]和[链接器->命令行参数]中加上对应参数(比如-pthread)即可,然后我试着引用自己 ...

  6. 1711 Number Sequence(kmp)

    Number Sequence Time Limit : 10000/5000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) To ...

  7. Train-Alypay-Cloud:mPaaS 移动开发平台培训(第一次)

    ylbtech-Train-Alypay-Cloud:mPaaS 移动开发平台培训(第一次) 1.返回顶部 1. 大家好! 欢迎大家参加蚂蚁金融云 即将在2018年1月17日到1月18日 在北京 环球 ...

  8. usaco 2009 12 过路费

    最近学的图论,oj上的这道题卡了我一上午,写一下总结. 题目描述: 跟所有人一样,农夫约翰以着宁教我负天下牛,休教天下牛负我(原文:宁我负人,休教人负我)的伟大精神,日日夜夜苦思生财之道.为了发财,他 ...

  9. 深度解析Java中的那把锁

    锁的本质 我们先来讨论锁的出现是为了解决什么问题,锁要保证的事情其实很好理解,同一件事(一个代码块)在同一时刻只能由一个人(线程)操作. 这里所说的锁为排他锁,暂不考虑读写锁的情况 我们在这里打个比方 ...

  10. 使用Fiddler对Android手机的应用数据进行抓包分析

    文章源自: http://blog.csdn.net/zshq280017423/article/details/8928616/ 对于Android开发的同事最头疼的事情莫过于真机抓包,然后Fidd ...