fragment切换来切换去发送花屏或重叠的问题

如果有谁发生这种问题  我觉得首先看你的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

你可能感兴趣的:(Android学习,各种BUG,Android开发,fragment,花屏,布局重叠)