Android——tabHost的使用注意点

自己在使用TabHost的过程中由于时间久和自己就理解不深的缘故,在获取到tabHost后进行addTab操作时经常遇到空指针异常的缘故,在这里做一个总结

1.当我们直接让Activity继承自TabActivty时:

  • 需要在layout布局文件中指定一个TabHost控件的ID
  • 在activity中使用getTabHost()得到tabhost控件对象

2.当我们的activity不直接继承自TabActivity时,也不用intent填充fragment时

  • 需要通过findViewById获得tabHost控件,这时layout布局中并不指定id
  • 需要在使用tabHost之前调用tabHost.setup()进行初始化。重要的事情说三遍,如果不调用该函数则会出现空指针异常
  • 调用tabHost.setup()进行初始化
  • 调用tabHost.setup()进行初始化
  • 调用tabHost.setup()进行初始化

在这种情况下并不能直接在addTab的时候将其他的activity嵌入到当前的tab页面中,系统还是提示空指针异常比如:

 tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("第一").setContent(new Intent(this,Act1.class)));
        tabHost.addTab(tabHost.newTabSpec("tab2").setIndicator("第二").setContent(new Intent(this,Act2.class)));
        tabHost.addTab(tabHost.newTabSpec("tab3").setIndicator("第三").setContent(new Intent(this,Act3.class)));

但是还会提出一个建议:

Did you forget to call 'public void setup(LocalActivityManager activityGroup)'?

这告诉我们要调用tabHost的有参方法。但是该方法的参数只有通过
getLocalActivityManager()函数得到,该函数却是ActivityGroup才有的,所以请看第三条

3.当我们的activity不直接继承自TabActivity时,需要用intent填充fragment时

  • activity需要继承自ActivityGroup
  • 通过findViewById获得tabHost
  • 在使用tabHost之前要调用tabHost.setup(getLocalActivityManager());

**所以综合来看,如果要使用tabHost,那么直接继承自TabActivity是最方便的方法,不过需要在layout布局文件中指定tabHost控件的ID
为 a ndroid:id/tabhost (注意大小写),并且在activity中直接通过getTabHost()方法获取到tabHost对象**

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值