RadioGroup + Fragment替换 逻辑复杂时遇到的问题
2016-08-27 23:13
197 查看
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比较合适 因为界面的反应就在那一瞬间
虽然这样的做法有点粗糙,却解决了界面的跳转问题
声明:此文中我只是说出了大致的思路还有很多小细节需要注意
相关文章推荐
- 使用RadioGroup+ViewPager+Fragment实现带滑动的页卡效果TabHost时遇到的问题
- fragment+RadioGroup实现底部导航栏 多个 fragment 重影问题
- RadioGroup+Fragment替换+侧滑菜单
- 关于Fragment的显示与隐藏结合RadioGroup的默认选中问题
- RadioGroup+Fragment的替换
- 通过RadioGroup切换Fragment,快速切换会导致Fragment重叠或者IndexOutOfBoundsException: Invalid index 1, size is 1的问题
- 求助~~~~~~~~~ 有人遇到过这种问题吗? 一个radiogroup里有两个radiobutton,选择了其中一个后重置将两个radiobutton setChecked(false), 导致直接
- EXT 中遇到多个Radio不用RadioGroup是的单选 问题
- 几行代码解决RadioGroup+Fragment的重叠问题
- [Android学习笔记]fragment配合RadioGroup实现点击切换内容
- radiogroup子项值的问题
- Fragment的使用与学习及使用过程中遇到的问题
- [Android]动态替换Fragment全屏的问题
- 关于Extjs中radioGroup、checkBoxGroup、comboBox渲染div的问题,跟DOM相关
- Fragment的使用与学习及使用过程中遇到的问题
- 继checkBoxGroup之后的radioGroup取值和赋值问题
- ExtJS3.4.0 radioGroup,checkboxgroup 在 getForm().getValues()取值问题的解决方案
- ExtJS 单选按钮组RadioGroup在IE浏览器中显示不出来的问题
- 动态替换Fragment全屏的问题
- 分享关于Extjs2.0中RadioGroup和CheckboxGroup控件的取值和赋值问题