requireActivity()
和 getActivity()
都是从 Fragment
中获取宿主 Activity
的方法,但它们有一些不同的行为和使用场景。
requireActivity()
- 抛出异常:如果
Fragment
没有附加到任何Activity
,调用requireActivity()
会抛出IllegalStateException
。 - 安全性:通常在你确定
Fragment
已经附加到Activity
时使用,可以避免NullPointerException
。
getActivity()
- 返回null:如果
Fragment
没有附加到任何Activity
,调用getActivity()
会返回null
。 - 需要检查null:需要检查返回值是否为
null
,否则可能会导致NullPointerException
。
选择哪一个?
- 推荐使用
requireActivity()
:因为它更具安全性,强制你处理Fragment
未附加到Activity