对onActivityCreated片段回调有啥误解吗?
Posted
技术标签:
【中文标题】对onActivityCreated片段回调有啥误解吗?【英文标题】:Is there any misunderstanding about the onActivityCreated fragment callback?对onActivityCreated片段回调有什么误解吗? 【发布时间】:2020-07-24 08:31:50 【问题描述】:onActivityCreated
似乎意味着“这个片段回调在活动被创建之后执行......我的意思是,在片段正确附加到活动之后。在那里,你可以安全地调用@987654322 @,它不会返回 null,除非活动是 null
出于某种特殊原因”。
但是,我看到片段回调onAttach
甚至在OnCreate
之后被调用,这意味着片段已附加到已创建的活动。
片段(以及片段对话框,经常被遗忘)的完整工作流程是:onAttach
-> onCreate
-> onCreateView
-> onActivityCreated
。所以在这 4 种方法中的每一种中(可能不是onAttach
我不知道),activity 通常不为 null 并附加到片段。
所以我的问题是:为什么回调 onActivityCreated
因为活动实际上已经创建并附加到片段 3 回调之前???
【问题讨论】:
“quiproco”是什么意思?我不熟悉这个词。 @MikeM。你好,意思是“误会” 【参考方案1】:所以基本上在 onAttach() 中我们得到确认是活动已附加到我的片段,我可以使用 getActivity() 来获取诸如资源之类的东西
getActivity().getResources.getDrawable(R.drawable.abc)
但是假设如果你想获取在活动的 xml 中膨胀的视图,比如如果你想访问
getActivity().findViewById(R.id.Myelement)
你可能会在这里得到 null,所以 OnActivtyCreated() 确保活动的视图是膨胀的,你现在可以访问活动的视图(活动的视图已经创建(onActivityCreated))
【讨论】:
以上是关于对onActivityCreated片段回调有啥误解吗?的主要内容,如果未能解决你的问题,请参考以下文章
用于 onActivityCreated 中通用图像加载器的片段中进度条的 NullPointerException
为啥会调用fragment的onCreateView、onCreate、onActivityCreated
在 onActivityCreated() 之后再次调用 Fragment 的 onAttach()
Fragment中onCreate()、onCreateView()和onActivityCreated()的区别和使用