TabHost中的Tab的动态的添加和删除
Posted 若兰明月
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TabHost中的Tab的动态的添加和删除相关的知识,希望对你有一定的参考价值。
事件缘由
- 现在有这样的一个需求,那就是根据后台下发的配置来控制app首页的Tab的数量
- 解决办法方法一
- 首次进入的时候(首次安装),本地是没有配置的,这个时候取后台拉取一下配置,那么可以写这样的逻辑,首次进入不取本地数据,等待后台返回之后根据配置来看显示多少个Tab,然后其余的进入就读本地,后台更新再去更新
- 以上的做法有两个问题
- 逻辑比较繁琐,需要有一个flag控制是否是首次进入app(本地没有数据问题)
- 还有一个就是配置下发之后,需要再次进入app才能起到作用
- 这样的逻辑达不到理想的效果 —> (理想的效果是只要有下发配置,动态的更新Tab的数量)
完善解决方法
- 动态的根据配置去设置Tab的数量
- 首页使用的FragmentTabHost这个控件,里面有一个clearAllTabs() 清除所有的Tab,然后再去设置TabHost的个数,来动态的更新Tab的数量
- 注意点
- 调用clearAllTabs()方法的时候,要把mBottomTabHost.setCurrentTab(0) 设置为0,防止空指针异常(因为clearAllTabs()的时候,只有一个当前的MAinActivity了,又一个默认的当前界面)
伪代码
if (local)
updataBottom(tabConfig)
initBottomTab(xxx)
fromNet(tabConfig)
updataBottom(tabConfig)
initBottomTab(xxx)
ininBottomTab(xxx)
mTabs.clear(); // 盛放TabHost的数组
// 以下两句代码是关键代码
mBottomTabHost.clearAllTabs();
mBottomTabHost.setCurrentTab(0)
// TabHost的配置
// 然后mBottomTabHost.addTab(xx,xx,xx)
以上是关于TabHost中的Tab的动态的添加和删除的主要内容,如果未能解决你的问题,请参考以下文章
android中的tabHost怎样在点击一个选项卡后跳转到一个activity,点击另一个选项卡跳转到另一个activity?