onAttach在Fragment-Activity生命周期中何时被调用?
我知道片段生命周期,但到底是什么时候?
是在启动片段对象还是调用片段管理器时?
我刚刚看到 onActivityCreated() 将来会被弃用。我尝试实现 LifecycleOwner 和 LifecycleObserver 模式,但我不太确定我在这里做什么。
我正在使用 NavigationComponent,这意味着:
由于某些原因,我需要知道何时从所有这些片段(MainFragment 和子片段)创建活动
从我所看到的到现在,我需要:
getLifecycle().addObserver(new MainFragment()). 并对所有子片段执行此操作(这是冗长的)@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
private void onCreateEvent() {
Timber.i("%s MainActivity created", TAG);
}
Run Code Online (Sandbox Code Playgroud)
这似乎运作良好,但我有一些问题:
addObserver(new MainFragment()让我感到不安。看起来我们正在创建一个新的片段实例,而片段通常使用 navGraph 中定义的导航进行实例化。实现它的正确方法是什么?
编辑 1:
回答为什么我需要知道活动何时创建的问题:我需要这个,因为我需要访问我的 MainActivity 视图模型(new ViewModelProvider(requireActivity()).get(ViewModel.class)。调用requireActivity()或getActivity()我需要知道活动何时创建(使用 onActivityCreated() 很容易) )。数据绑定是用我的 MainActivity 和这个视图模型实现的。这个 Activity 的布局托管一个加载器,以显示何时执行网络请求。我可以从 MainFragment 和子片段执行请求。当我从其中一个执行请求时这些片段我需要启用这个加载器视图,当我取回数据时,我需要隐藏这个加载器。是的,所有这些片段都在图表中