从返回栈返回后,片段没有刷新内容

5
我有一个名为 ZooFragment 的页面包含了一个 ViewPager。这个 ViewPager 包括三个子页面:LionFragmentLeopardFragmentTigerFragment,每个子页面都可以请求调用一个新的 ZooFragment
当一个名为 zooAZooFragment 初始化(带参数)时,所有三个子页面中的内容都会显示。从任何子页面,用户触摸都将调用一个名为 zooB 的新的 ZooFragment(当然是带不同的参数)。
根据从子页面到 ZooFragment 的事务动作:
1.如果我使用 transaction.replace()zooB 将为空白,所有三个子页面在 zooB 中都没有内容,为空。在 zooB 页面上,从导航栏按下硬键 BackzooA 就变成了空白。
2.如果我使用 transaction.add()zooB 不会为空白,在按下 Back 按钮后,zooA 就变成了空白。
ZooFragment 类中,我在 onCreateView() 中加载数据,那么为什么 ViewPager 中的所有子页面都会变为空白呢?

1
你遗漏了最重要的部分:在哪里使用新的 zooB 片段进行交易? - user
通过在其中一个子片段(例如LionFragment)中触摸View,@Luksprog可以将事务转移到zooB - Pete Houston
我之前的评论表述不够清晰,我更关心你放置zooB的容器。 - user
这只是一个FrameLayout,其中至少存在一个ZooFragment - Pete Houston
1
我认为问题是由于不正确地使用 FragmentManager(或错误的使用方式)或容器出现问题。关于这些事务的一些代码将会很有帮助。 - user
1
你没有提到FragmentManager。如果你在ZooFragment中使用ViewPager,应该使用getChildFragmentManager()来处理ViewPager内部的Fragments,因为你正在处理嵌套的Fragments。 - Alex Fu
1个回答

0
请勿替换ViewPager中的片段,只需在与ViewPager相同布局的任何其他容器中显示(使用事务),并且该容器应为FrameLayout。还要设计一种机制以了解何时和哪个片段进入视图。然后请求来自响应更新片段的实用程序的新数据。我认为,在ViewPager中的所有片段的情况下,不会调用onDestroyed。
ViewPager中的片段是固定的,因此它们的内容不会消失,直到应用程序管理器想要销毁它。而不是尝试替换适配器中的片段,请尝试提供不同的片段集并通知数据集更改,或者利用FrameLayout的优势,在视图分页器选项卡的当前片段上显示另一个片段。
这是我的解决方案:

在禁用其默认滑动的ViewPager中应用于Fragment级别的滑动手势


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接