Fragment中嵌套ViewPager导致内部fragment不初始化的问题

具体场景是这样:
我在 MainActivity 中使用 fragmentTransaction.commitAllowingStateLoss() 添加了 AFragment,
AFragment 中使用 ViewPager 实现 BFragment 和 CFragment的滑动.
添加 AFragemnt 后我并不跳转到这个 fragment, 所以 AFragment 没有显示, 但是 AFragment 中的 ViewPager 已经创建好了, 也 setAdapter/setCurrentItem 了, 但这时候 BFragment 和 CFragment 就没有初始化.

请问这是怎么回事, 有办法解决么?

4个回答

是这种效果吗图片说明

j550341130
叽哩叽哩鸡 回复木易匕禾页: 考虑到性能问题, 不打算一下把所有tab创建出来, 只单独创建额外的一个, 所以不能用viewpager
大约 2 年之前 回复
qq_33220645
木易匕禾页 fragment_A和fragment_B其实都创建了
大约 2 年之前 回复
qq_33220645
木易匕禾页 回复叽哩叽哩鸡: 你这种就需要外层也使用viewpager了,因为viewpager默认是预加载前一个和后一个页面的,你可以参考demo中加载到fragment_two的时候,fragmenta和fragment其实都创建了。
大约 2 年之前 回复
j550341130
叽哩叽哩鸡 感谢还写了个demo. 大体就是这样的情景, 我希望我在fragment_one的时候, fragment_two加载成功, 并且其内部的A_Fragment也执行完毕, 比如弹出一个Toast, 或者在下面tab上加个小红点之类的. 但是我这A_Fragemnt的onCreateView都没有走
大约 2 年之前 回复

你这MainActivity中是只有AFragment一个fragment吗?如果只有一个AFragment说明这个Afragment已经添加进来了,BFragment和CFragment是需要通过getChildFragmentManager然后开启事务,然后添加进来的,最后commit

qq_33220645
木易匕禾页 回复叽哩叽哩鸡: http://pan.baidu.com/s/1dF71ruL 如果是我发给你图片的效果你可以下载看下,不是这种效果那就不清楚了。。
大约 2 年之前 回复
j550341130
叽哩叽哩鸡 A加载时viewpager.setAdapter, viewpager内的B和C的onCreateView就执行不到
大约 2 年之前 回复
j550341130
叽哩叽哩鸡 不是只有A一个, MainActivity目前显示的还不是A, 是另外一个.B和C是在A的viewpager里面的, 没有commit. A加载成功后
大约 2 年之前 回复

这问题我以前遇到过,试一试transaction.commitNowAllowingStateLoss();

j550341130
叽哩叽哩鸡 v4 版本的问题, 我更新后有这个方法了, 可是还是不行
大约 2 年之前 回复
j550341130
叽哩叽哩鸡 只有这个方法 commitAllowingStateLoss, 没有 commitNowAllowingStateLoss
大约 2 年之前 回复
j550341130
叽哩叽哩鸡 好像靠谱, 我去试试
大约 2 年之前 回复

v4 版本的问题, 我更新后有这个方法了, 可是还是不行

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问