从后台堆栈返回后,片段不刷新内容

时间:2013-09-04 07:13:49

标签: android android-fragments android-viewpager

我有ZooFragment,其中包含ViewPager。 这个ViewPager有三个孩子:LionFragmentLeopardFragmentTigerFragment,这些孩子中的每一个都可以请求交易来调用新的ZooFragment

初始化名为ZooFragment(带参数)的zooA时,ViewPager中的所有三个孩子都会显示内容。从任何子片段,用户触摸将调用一个名为ZooFragment的新zooB(当然,使用不同的参数)。

基于从子片段到ZooFragment的交易操作:

1.如果我使用transaction.replace()zooB将为空,则zooB中的所有三个孩子都不显示任何内容,为空。在zooB,在导航栏中按下硬键BackzooA变为空。

2.如果我使用transaction.add()zooB将不会为空,按下Back按钮后,zooA将为空。

ZooFragment类中,我在onCreateView()中加载数据,那么ViewPager中所有子片段都为空的原因是什么?

1 个答案:

答案 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