【发布时间】:2017-03-24 04:42:51
【问题描述】:
我正在尝试重新设计一些片段以从 onAttach 和 onActivityCreated 覆盖中删除依赖项,而是稍后在 onViewCreated 覆盖中查找 Activity。
在 Android 应用程序生命周期中是否存在在 Activity onCreate 完成之前调用片段的 onViewCreated 的情况。例如我知道:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
通常不会导致 Fragments onAttach 被调用(假设片段稍后以编程方式添加到片段管理器),但是在极少数情况下,配置更新片段管理器可以在 super.onCreate 中重新创建片段,这会导致 onAttach在活动的 onCreate 完成之前调用。
【问题讨论】:
-
"从 onAttach 和 onActivityCreated 中移除依赖项" 为什么?这样做有什么具体原因吗?
-
因为我在那里有一个循环依赖。 Activity onCreate 初始化应用程序逻辑,该逻辑决定创建哪个片段并创建它。但在极少数情况下,Activity onCreate super.onCreate 正在重新创建片段本身(这很糟糕 - 它在任何给定点都不知道正确的片段是什么,但无论如何)。因此,在其 onAttach 中引用活动的片段正在尝试引用尚未配置的库,因为该库尚未决定使用哪个片段。
-
我认为您在重新创建 Activity 时(例如方向更改或返回 Activity 时)会遇到此问题,其参数
Bundle savedInstanceState非空。