【发布时间】:2012-12-15 03:09:02
【问题描述】:
我正在使用 FragmentActivity 和 Fragments。
应用程序启动时:
FragmentActivity onCreate() <------
FragmentActivity onStart()
FragmentActivity onResume()
Fragment onAttach()
Fragment onCreate() <------
Fragment onCreateView()
Fragment onActivityCreated()
Fragment onStart()
Fragment onResume()
一切正常,FragmentActivity onCreate() 在 Fragment onCreate() 之前被调用。 当我旋转时:
Fragment onPause()
FragmentActivity onPause()
Fragment onStop()
FragmentActivity onStop()
Fragment onDestroyView()
Fragment onDestroy()
Fragment onDetach()
FragmentActivity onDestroy()
---
Fragment onAttach()
Fragment onCreate() <----------
FragmentActivity onCreate() <---------
Fragment onCreateView()
Fragment onActivityCreated()
Fragment onStart()
FragmentActivity onStart()
FragmentActivity onResume()
Fragment onResume()
在 FragmentActivity onCreate() 之前调用 Fragment onCreate()。为什么不一致?
在 FragmentActivity onCreate() 中,我生成了一些数据,这些数据由 Fragment onCreate() 获取。由于这种奇怪的行为,我不得不将我的代码从 Fragment onCreate() 移动到 Fragment onCreateView() 以确保我的数据之前已生成。
我是用 FragmentStatePagerAdapter 来保存 Fragment,可能是这个原因?
【问题讨论】:
-
那么,您的解决方案是什么?
-
@levi 用 onActivityCreated() Fragment 方法中的数据填充视图。或者重新考虑您的架构,在大多数情况下,您不必从主机活动中获取数据。如果您有带有动态数据的 ListView/RecyclerView,请使用 Loaders。那是我的最终解决方案,因为我在每个片段中都有 List。您还可以使用消息总线库(EventBus、Otto、...)来获得更简洁的架构。
标签: android android-fragments oncreate android-fragmentactivity android-support-library