fragment 中 context 为 null 时怎么办

What to do when context is null in fragment

从方法简单地 return 并且如果上下文为 null 什么也不做是否安全(正确)?目前,每当我需要来自片段的上下文时,我都会这样做。

Context context = getContext();
if(context == null) return;

我的问题太愚蠢和明显了,但我仍然不确定这是否正确。是否有必要。 (也许我应该记录警告?)


我在 onCreateViewonViewCreated 中执行此检查,当需要时从视图持有者和内部视图点击侦听器中的 itemView 获取上下文。

我认为重新运行而不做任何事情与捕获异常并吞下它一样糟糕。

片段有一个方法 requireContext()。当上下文为空时,它只会使应用程序崩溃。实际上,我从未见过我的应用程序因此而崩溃。所以我想片段中的空上下文是一种非常罕见和极端的情况。

onViewCreated中,您还可以从创建的视图中获取上下文。它是非空的,因为视图创建需要上下文。

如果你需要一些资源,你也可以使用getResources().getString()代替getContext().getString()

由于您的代码位于片段中,因此您必须使用:

getActivity()

获取主机的上下文 activity。
为什么你得到 null 上下文?
onAttach() 之后你可以使用 getContext()