requireActivity().doSomething() // throws IllegalStateException("Fragment " + this + " not attached to an activity.")
requireContext().doSomething() // throws IllegalStateException("Fragment " + this + " not attached to a context.")
public final FragmentActivity requireActivity() {
FragmentActivity activity = getActivity();
if (activity == null) {
throw new IllegalStateException("Fragment " + this + " not attached to an activity.");
}
return activity;
}
要求上下文()
public final Context requireContext() {
Context context = getContext();
if (context == null) {
throw new IllegalStateException("Fragment " + this + " not attached to a context.");
}
return context;
}
2条答案
按热度按时间1bqhqjot1#
因为它们可能是空的。在java中,你可以直接调用它们。但是在Kotlin中,它们被声明为可空的返回类型。所以你有3个选择:
1.不确定是否为空:
1.您确定它不会为空,以便可以调用
但是它很难看,也不清楚。它没有显示出意图。你真的期望这个活动是可用的吗?或者这只是Java到Kotlin转换后的剩余部分?
1.这是最干净的选项,您可以确定它不会为null,但如果它确实为null,则会为此准备一个特定的异常(IllegalStateException),并且会抛出该异常,而不是一般的NullPointerException。
e37o9pze2#
查看官方Android源代码文档。这些方法返回活动/上下文,并进行空值检查。
要求活动()
要求上下文()