为兼容的游戏激活游戏内重叠Fragment界面重叠是什么意思

在上一篇里我们分析了造成Fragment重疊的原因,这一篇我会介绍几个解决方案同时给出一个我的方案:9行代码让你app内的Fragment对重叠说再见!

是的你没看错,只要上面的9行代码! FragmentState沒帮我们保存Hidden状态那就我们自己来保存,在页面重启后我们自己来决定Fragment是否显示!

优点:不管多深的嵌套Fragment、同级Fragment等场景,全都可以正瑺工作不会发生重叠!

有些小伙伴反应还是会重叠,其实是因为加载根Fragment时没有经过判断的原因当在类似onCreate等里加载根Fragment时,需要下面的判斷避免重复加载相同的Fragment:
(PS:addreplace情况下如果没有加入回退栈,则不判断也不会造成重叠;若加入回退栈则也会造成重叠现象,建议統一判断下)

// 因为在页面重启时Fragment会被保存恢复,而此时再加载Fragment会重复加载导致重叠

最后的方案用在了我的中,在新的仿知乎的Demo里各種复杂场景表现完美。

但是这个方案真的神奇的不可思议在我的测试下,各种情况都正常适用但是之前从没看到有人提到过该方案,所以如果你发现该方案有我没有考虑到的BUG请第一时间告诉我!

官方在Support 24.0.0及以上版本已经从底层使用该方式修复该BUG;如果你还在使用 < 24.0.0 的版本,还是需要这 ”9行代码“的~

当遇到问题时我们如果从源头思考:为什么会发生这个问题? 从源码角度分析问题可能就会得到一个更恏的解决问题的思路!

那么解决方案就是自己写一些代碼去保存fragment的显示状态

  • Fragment全解析系列(一):那些年踩过的坑

  • Fragment全解析系列(二):正确的使用姿势

我要回帖

更多关于 重叠界面 的文章

 

随机推荐