TabHost中的Tab的动态的添加和删除

android开发 同时被 2 个专栏收录
113 篇文章 1 订阅
2 篇文章 0 订阅

事件缘由

  • 现在有这样的一个需求,那就是根据后台下发的配置来控制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)
    
}
  • 1
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值