我有ZooFragment
,其中包含ViewPager
。
这个ViewPager
有三个孩子:LionFragment
,LeopardFragment
和TigerFragment
,这些孩子中的每一个都可以请求交易来调用新的ZooFragment
。
初始化名为ZooFragment
(带参数)的zooA
时,ViewPager
中的所有三个孩子都会显示内容。从任何子片段,用户触摸将调用一个名为ZooFragment
的新zooB
(当然,使用不同的参数)。
基于从子片段到ZooFragment
的交易操作:
1.如果我使用transaction.replace()
,zooB
将为空,则zooB
中的所有三个孩子都不显示任何内容,为空。在zooB
,在导航栏中按下硬键Back
,zooA
变为空。
2.如果我使用transaction.add()
,zooB
将不会为空,按下Back
按钮后,zooA
将为空。
在ZooFragment
类中,我在onCreateView()
中加载数据,那么ViewPager
中所有子片段都为空的原因是什么?
答案 0 :(得分:0)
请不要替换ViewPager中的片段,只显示(使用事务)在与ViewPager相同的布局中包含的任何其他片段,并且该容器应该是FrameLayout。设备也是一种机制,可以知道何时以及什么片段进入视图。然后从响应更新片段的实用程序请求新数据。我不认为在ViewPager中的所有片段的情况下都会调用onDestroyed。 ViewPager中的碎片是固定的,所以在应用程序管理器想要销毁它之前不会有内容。而不是尝试替换适配器中的碎片,尝试给出一组不同的碎片并更改notifyDataSet,或者利用它们of FrameLayout在视图分页器选项卡的当前片段上显示另一个片段。
我的解决方案有效:
Swipe Gesture applied at Fragment level along with ViewPager with it's default swipe disabled