Kotlin中的RequireActivity()和requireContext()
•
问答
gejiayin 回答:Kotlin中的RequireActivity()和requireContext()
查看官方的Android源代码文档。这些方法返回带有空检查的活动/上下文。
requireActivity()
public final FragmentActivity requireActivity() {
FragmentActivity activity = getActivity();
if (activity == null) {
throw new IllegalStateException("Fragment " + this + " not attached to an activity.");
}
return activity;
}
requireContext()
public final Context requireContext() {
Context context = getContext();
if (context == null) {
throw new IllegalStateException("Fragment " + this + " not attached to a context.");
}
return context;
}
,
因为它们可能为null。在Java中,您可以要求它们。但是在Kotlin中,它们被声明为可为空的返回类型。因此,您有3个选择:
- 您不确定它是否为null: 活动?.let {//做您需要做的事。}
- 您确定它不会为null,因此您可以调用activity !!。doSomething,但它很难看。
- 这是最干净的选项,您可以确定它不会为null,但如果某种原因,它将为此准备一个特定的异常(IllegalStateException),并且将引发该异常,而不是泛型NullPointerException。