RadioGroup + Fragment替换 逻辑复杂时遇到的问题

RadioGroup+Fragment的替换  逻辑复杂时会遇到的问题

  界面的基本逻辑如下:

1、Splash页面过后   进入MainActivity  

2、在MainActivity中使用的 下面radiogroup  中间  FrameLayout占位  上面自定义的头布局

3、下面4个radiobutton  共有5个fragment

4、在第一个rb 中根据是否登录 展示不同的fragment

5、在点击最右边的 rb4  根据是否登录进行展示

           如果是登录状态  直接切换fragment  , 如果是未登录状态 跳转到LoginActivity

6、在LoginActivity中 有返回 和 登录  两种状态

          登陆后让其显示最后一个fragment    如果没有登录直接返回  就模拟点击第一个rb1

那么 问题就出来了:(是否登录是使用了SP进行标记)

      首先MainActivity 中要处理 onResume 方法 根据不同的标记判断该执行怎样逻辑(本人用的是SP进行标记)

      模拟操作的问题出来了,当你进入MainActivity后本来就是未登录状态  暂且不说rb1展示的fragment

                     当你点击 rb4(最右边的)    此时触发的逻辑会是  rb4被选中  打开了LoginActivity 

                     当你不登录  点击返回时(返回是直接finish)      程序会这样走:  rb4被选中(rb4是默认被选中的, rb4对应的fragment会去加载)  然后rb1被选中(rb1对应的fragment会去加载)   此时LoginActivity又开启了

                      这一系列就在短短的不到一秒钟的时间   又回到了LoginActivity  此时你点一次返回后 发现还有个LoginActivity   需要再点一次的返回  才会回到MainActivity

   出现这种情况   该怎样分析呢?(本人给LoginActivity设置了 singleTop singleTask singleInstance  都不行)

           其实顺序是这样的:

                          先走的finish把自己finish掉了 然后进入了MainActivity 而rb4是由于上次点了之后默认被选中的,由于此时仍处于未登录状态  然后会去开启LoginActivity 而 在开启的同时  会去选中rb1, 在rb1

                    被选中后  LoginActivity 出来了     从而你需要再点击一次返回  才能看到MainActivity   而这次  MainActivity的默认选中是 rb1 所以不会再次触发LoginActivity

    解决办法:

                    在LoginActivity的返回中   使用SP中加个标记   以当前系统时间为  标记值

                    在MainActivity中   rb的 Index 为3时并且是未登录状态时  取出SP中的 时间值 

                    用当前的时间值 减去 之前存的时间值   > 1000    时 , 去执行跳转到LoginActivity  并且return;(小于1000时什么都不做)

                    这个时间差可以自己指定  一般为1000比较合适  因为界面的反应就在那一瞬间 

                    虽然这样的做法有点粗糙,却解决了界面的跳转问题

声明:此文中我只是说出了大致的思路还有很多小细节需要注意

          

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值