如果有谁发生这种问题 我觉得首先看你的fragment切换机制
你使用的是add还是replace 这两种产生的效果不一样的
其实fragment在被切换的时候 java 机制是这样的 :把引用销毁 内存不动
这句话怎么理解,因为我们在java中申请一个变量的时候都是这样的,现在 堆内存 中给你分配地址空间,然后在 栈内存 中给你装上内容
栈内存是指向 堆内存,理解了这个上面那句话就好理解
然后我们再回到fragment切换的时候,首先java把当前的fragment销毁掉,然后把切换之后的fragment显示出来,
而这个销毁的过程你必须清楚, 还是上面那句话,重要的事说三片 销毁引用 内存不动
这个时候发生 一种 空 错误 或者 发生一种你忘记了执行hide代码的问题:
1.如果引用不存在了,肯定是无法销毁的 这个时候还没有报错,但是错误的体现就在花屏上
2.如果你根本就忘记了hide,那谁都怪不了
在我们程序中销毁大家应该都知道就是hide 或者你自己再写个函数remove里面肯定调用的也是hide了,
好了 如果你这个时候都看懂了,知道了这个没有hide掉,也就是当我们切换的时候 这里假设从A切换到B 那么A是没有被成功hide哦
然后fragment管理事务器就会把B显示出来,好了这里就是重点了,B会被java创建 而由于A没有被成功hide A也会被创建,因为只要有fragment没有被hide
fragment管理事务器都会负责把你显示出来,这个应该清楚把,
那么A跟B都创建了,这个时候肯定就会发生 屏幕布局重叠的情况了吧, 就是我们说的花屏问题
这里面的原理我觉得我已经说清楚了,如何修改修复这个bug 就需要我们去看我们有没有成功把不需要的fragment给 hide掉了
从这个方向你一定能解决问题的,阿西吧保佑你完美解决问题!!!!
推荐看这篇文章:我觉得他说的蛮好
http://www.tuicool.com/articles/jea2QfY