在片段中的onViewCreated()之后调用onActivityCreated()吗?

时间:2019-05-22 15:17:16

标签: android android-lifecycle

我有两个ViewModel。一个仅用于Fragment,另一个用于Activity中的共享ViewModel。

片段:

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

    viewModel = ViewModelProviders.of(this).get(FragmentViewModel.class);
    ...
}

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    activityViewModel = ViewModelProviders.of(getActivity()).get(ActivityViewModel.class);
}

但是为了知道我是否可以使用活动的ViewModel中的 content ,我需要知道onActivityCreated(...)之后是否调用了onViewCreated(...),以便我可以请求片段ViewModel中的数据基于我在Activity的ViewModel中拥有的数据。

总结:

可以确定在onActivityCreated(...)完成之后调用onViewCreated(...)吗?

2 个答案:

答案 0 :(得分:3)

经过进一步研究,我想找到了答案。

  在版本22.1.0中添加了

onActivityCreated 无效onActivityCreated   (捆绑的saveInstanceState)

     

在创建片段的活动并且此活动被调用时调用   片段的视图层次结构实例化。它可以用来做最后   这些片段就位后进行初始化,例如检索   视图或恢复状态。这对于使用以下内容的片段也很有用   setRetainInstance(boolean)保留其实例,作为此回调   告诉片段何时与新活动完全关联   实例。在onCreateView(LayoutInflater,ViewGroup,   捆绑)和onViewStateRestored(捆绑)之前。

基于文档:

  

.. fragment的视图层次结构实例化。它可以用来做最后   这些零件就位后进行初始化。.

视图层次结构应完全实例化,因此57 female完成后将调用onActivityCreated

答案 1 :(得分:2)

是的,可以肯定的是,您发现了。另外,请参见this answer以获得一个可爱的小生命周期图(第二个)。