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?

TabHost实现简单Tab切换

Android TabHost 实现Tab切换

android里实现一个tabhost显示怎么弄?

关于侧边栏和滑动tab,还有底部TabHost一起怎么实现?

当我在eclipse中单击按钮时,使用tabHost并转到特定选项卡