对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片段回调有啥误解吗?的主要内容,如果未能解决你的问题,请参考以下文章

Android片段文档含义

用于 onActivityCreated 中通用图像加载器的片段中进度条的 NullPointerException

onactivitycreated啥时候执行

为啥会调用fragment的onCreateView、onCreate、onActivityCreated

在 onActivityCreated() 之后再次调用 Fragment 的 onAttach()

Fragment中onCreate()、onCreateView()和onActivityCreated()的区别和使用