前言
Fragment切换方法有两种:add和replace方式切换,其中add方法切换不会重新创建Fragment,而replace方式则会重新创建Fragment。
这也就意味着replace方式在从Fragment_1切换到Fragment_2时,Fragment_1会执行onDestroy()和onDetach()方法。
此时,如果Fragment_1中包含数个子subFragment,使用replace切换到Fragment_2,内层的subFragment会被回收,显示未空白,原有数据丢失。
问题描述
在编写嵌套Fragment时,需要实现内层subFragment刷新,原来使用的是getFragmentManager()会报错:FragmentManager is already executing transactions 。但切换外层Fragment时,内层数据还在
后按照网上使用getChildFragmentManager(),报错问题解决,出现外层切换,造成内层Fragment被回收、显示空白的问题
解决方法
外层改用add、show、hide方法切换,问题解决。
解决问题灵感和参考代码:android之fragment的两种使用方式(add和replace方式切换)
感悟
这次bug修了前后超过6小时,遇到问题,要从多个方向思考,多去尝试各种解决方法。