前言
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小时,遇到问题,要从多个方向思考,多去尝试各种解决方法。
本文探讨了在Android开发中,使用add、show、hide方法而非replace来切换Fragment,以避免子subFragment被回收导致的数据丢失问题。通过调整外层Fragment的切换方式,解决了内层subFragment在切换时显示空白的难题。

1281

被折叠的 条评论
为什么被折叠?



