fragment 中 context 为 null 时怎么办
What to do when context is null in fragment
从方法简单地 return 并且如果上下文为 null 什么也不做是否安全(正确)?目前,每当我需要来自片段的上下文时,我都会这样做。
Context context = getContext();
if(context == null) return;
我的问题太愚蠢和明显了,但我仍然不确定这是否正确。是否有必要。 (也许我应该记录警告?)
我在 onCreateView
、onViewCreated
中执行此检查,当需要时从视图持有者和内部视图点击侦听器中的 itemView
获取上下文。
我认为重新运行而不做任何事情与捕获异常并吞下它一样糟糕。
片段有一个方法 requireContext()
。当上下文为空时,它只会使应用程序崩溃。实际上,我从未见过我的应用程序因此而崩溃。所以我想片段中的空上下文是一种非常罕见和极端的情况。
在onViewCreated
中,您还可以从创建的视图中获取上下文。它是非空的,因为视图创建需要上下文。
如果你需要一些资源,你也可以使用getResources().getString()
代替getContext().getString()
由于您的代码位于片段中,因此您必须使用:
getActivity()
获取主机的上下文 activity。
为什么你得到 null
上下文?
在 onAttach()
之后你可以使用 getContext()
从方法简单地 return 并且如果上下文为 null 什么也不做是否安全(正确)?目前,每当我需要来自片段的上下文时,我都会这样做。
Context context = getContext();
if(context == null) return;
我的问题太愚蠢和明显了,但我仍然不确定这是否正确。是否有必要。 (也许我应该记录警告?)
我在 onCreateView
、onViewCreated
中执行此检查,当需要时从视图持有者和内部视图点击侦听器中的 itemView
获取上下文。
我认为重新运行而不做任何事情与捕获异常并吞下它一样糟糕。
片段有一个方法 requireContext()
。当上下文为空时,它只会使应用程序崩溃。实际上,我从未见过我的应用程序因此而崩溃。所以我想片段中的空上下文是一种非常罕见和极端的情况。
在onViewCreated
中,您还可以从创建的视图中获取上下文。它是非空的,因为视图创建需要上下文。
如果你需要一些资源,你也可以使用getResources().getString()
代替getContext().getString()
由于您的代码位于片段中,因此您必须使用:
getActivity()
获取主机的上下文 activity。
为什么你得到 null
上下文?
在 onAttach()
之后你可以使用 getContext()