我正在使用FragmentActivity和Fragments。旋轉之後,onCreate()片段在onCreate()之前調用片段活動
應用程序啓動時:
FragmentActivity onCreate() <------
FragmentActivity onStart()
FragmentActivity onResume()
Fragment onAttach()
Fragment onCreate() <------
Fragment onCreateView()
Fragment onActivityCreated()
Fragment onStart()
Fragment onResume()
一切都OK,FragmentActivity的onCreate()片段的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()
片段的onCreate()被FragmentActivity的onCreate之前稱爲()。爲什麼它不一致?
在FragmentActivity onCreate()我生成一些數據,片段onCreate()獲取。由於這種奇怪的行爲,我不得不將我的代碼從片段onCreate()移動到片段onCreateView(),以確保我的數據是以前生成的。
我正在使用FragmentStatePagerAdapter來保存碎片,也許這是原因?
那麼,你是什麼r解決方案? – levi
@levi用onActivityCreated()片段的方法填充數據。或者重新考慮你的架構,在大多數情況下,你不必從主機活動中獲取數據。如果您有帶動態數據的ListView/RecyclerView,請使用Loaders。這是我的最終解決方案,因爲我在每個片段中都有List。您還可以使用消息總線庫(EventBus,Otto,...)擁有更清潔的架構。 – AppiDevo