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)
    
}

你可能感兴趣的:(android开发,工作实践)