2016-11-10 76 views
0

我正在尝试重新设计一些片段以从onAttach和onActivityCreated覆盖中删除依赖关系,而是在onViewCreated覆盖中稍后查找Activity。Activity onCreate完成之前可以调用onViewCreated吗?

是否有任何Android应用程序生命周期中的Activity onCreate完成之前调用了片段的onViewCreated的情况。例如,我知道:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
} 

通常不会造成碎片onAttach被称为(假设片段被添加到片段经理编程以后),但在极少数情况下与配置更新的片段经理可以重新创建片段在super.onCreate中导致在onCreate之前调用onAttach以完成活动。

+0

“请从onAttach依赖和onActivityCreated” 为什么?这样做的具体原因是什么? – Sufian

+0

因为我有一个循环依赖关系。 Activity onCreate初始化应用逻辑,该逻辑决定要创建哪个片段并创建它。但在极少数情况下,Activity onCreate super.onCreate正在重新创建片段本身(这很糟糕 - 它不知道在任何给定点上哪个片段是正确的,但无论如何)。因此,引用onAttach中的活动的片段正试图引用尚未配置的库,因为库尚未决定哪个片段甚至尚未使用。 – user3690202

+0

我认为当Activity被重新创建时(比如在方向改变或者回到活动时),你将面临这个问题,它将有一个参数'Bundle savedInstanceState'非空。 – Sufian

回答

0

 Fragment LifeCycle

的onCreate() 系统创建片段时调用此。在你的实现中,你应该初始化当片段暂停或停止时要保留的片段的基本组件,然后恢复。

onCreateView() 调用以创建与片段关联的视图层次结构。

当片段第一次绘制其用户界面时,系统会调用它。要为您的片段绘制UI,您必须从此方法返回一个视图,该方法是片段布局的根。如果片段不提供UI,则可以返回null。

参考Fragments Life Cycle

相关问题