我有一个包含 ZooFragment
的 ViewPager
。
这个 ViewPager
有三个 child : LionFragment
、 LeopardFragment
和 TigerFragment
,这些 child 中的每一个都可以请求事务来调用一个新的 ZooFragment
。
当一个名为 ZooFragment
(带参数)的 zooA
被初始化时,ViewPager
中的所有三个 child 都会显示内容。从任何子 fragment ,用户触摸都会调用一个名为 ZooFragment
的新 zooB
(当然,使用不同的参数)。
基于从子 fragment 到 ZooFragment
的事务操作:
1.如果我使用 transaction.replace()
, zooB
将是空的, zooB
中的所有三个 child 都没有显示内容,为空。在 zooB
,从导航中按下硬键 Back
, zooA
变为空。
2.如果我使用 transaction.add()
, zooB
不会为空,然后按下 Back
按钮,zooA
变空。
在 ZooFragment
类中,我在 onCreateView()
中加载数据,那么 ViewPager
中的所有子 fragment 都为空的原因是什么?
最佳答案
请不要替换 ViewPager 中的 fragment ,只需在与 ViewPager 相同布局中包含的任何其他内容中显示(使用事务),并且该容器应该是 FrameLayout。还设置了一种机制来了解何时以及什么 fragment 进入视野。然后从响应更新 fragment 的实用程序请求新数据。我认为在 ViewPager 中的所有 fragment 的情况下都不会调用 onDestroyed。
ViewPager 中的 Fragment 是固定的,所以如果应用程序管理器想要销毁它之前内容不会去FrameLayout 以在 View 分页器选项卡的当前 fragment 上显示另一个 fragment 。
我的解决方案有效:
Swipe Gesture applied at Fragment level along with ViewPager with it's default swipe disabled
关于android - 从返回堆栈返回后, fragment 不刷新内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18607580/