我有两个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(...)
吗?
答案 0 :(得分:3)
经过进一步研究,我想找到了答案。
在版本22.1.0中添加了onActivityCreated 无效onActivityCreated (捆绑的saveInstanceState)
在创建片段的活动并且此活动被调用时调用 片段的视图层次结构实例化。它可以用来做最后 这些片段就位后进行初始化,例如检索 视图或恢复状态。这对于使用以下内容的片段也很有用 setRetainInstance(boolean)保留其实例,作为此回调 告诉片段何时与新活动完全关联 实例。在onCreateView(LayoutInflater,ViewGroup, 捆绑)和onViewStateRestored(捆绑)之前。
基于文档:
.. fragment的视图层次结构实例化。它可以用来做最后 这些零件就位后进行初始化。.
视图层次结构应完全实例化,因此57 female
完成后将调用onActivityCreated
答案 1 :(得分:2)
是的,可以肯定的是,您发现了。另外,请参见this answer以获得一个可爱的小生命周期图(第二个)。