RadioGroup+Fragment的替换
2016-10-28 14:01
267 查看
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 + Fragment替换 逻辑复杂时遇到的问题
- RadioGroup+Fragment替换+侧滑菜单
- Android ViewPager+RadioGroup+Fragment超高仿微信主界面
- RadioGroup+Fragment实现页面之间的切换
- ViewPager+Fragment+RadioGroup实现页面联动\点击切换
- RadioGroup结合RadioButton使用切换Fragment片段
- RadioGroup与Fragment使用
- Android中的RadioGroup+ViewPager+Fragment导航样式实现(续)
- RadioGroup+Fragment实现页面之间的切换
- Fragment + TabHost + RadioGroup
- ViewPager,RadioGroup,FragmentManager 详解 <四> Fragment,ViewPager 和TabLayout
- 巧妙实现缺角radiogroup控制多个fragment切换和滑动
- Android RadioGroup.check() onCheckedChanged 回调 3 次 FragmentTransaction.commit() 不会 立即 起作用
- RadioGroup+Fragment实现页面之间的切换
- 常用RadioGroup+Fragment点击切换,RadioButton图标设置自己想要的位置及大小
- RadioGroup+Fragment实现底部导航栏
- Android中RadioGroup和Fragment的应用
- 点击第一viewpager中的按钮,跳转到第二个radiogroup对应的fragment
- 4.8 Android Fragment<v4>, ViewPager, RadioGroup的联动
- 实现RadioGroup与Fragment的交互