根据支持库更改日志和Fragment类文档(https://developer.android.com/reference/android/support/v4/app/Fragment.html),现在有新的方法,如requreActivity()和requireContext()。
与getActivity()和getContext()相比,这些方法的目的是什么,因为它们仍然可以抛出IllegalStateExceptions?当找不到活动或上下文时,这是否优选返回null?我应该简单地用requireActivity()替换每个getActivity()吗?
答案 0 :(得分:19)
基本上有一个方法总是返回一个非null对象或抛出异常。就是这样。
来自文档:
片段现在有requireContext(),requireActivity(),requireHost()和requireFragmentManager()方法,它们返回等效get方法的NonNull对象或抛出IllegalStateException。
https://developer.android.com/topic/libraries/support-library/revisions.html#27-1-0
这个问题也引用了背后的原因:
" getActivity和getContext方法返回可空类型,因为当Fragment未附加到Activity时,这些方法已经返回null。行为没有变化,现在只是明确标记,所以你可以安全地处理它。"
https://stackoverflow.com/a/47253335/3268303
来自reddit:
"我从支持v26更新到支持v27,并且必须在Fragments中为活动/上下文方法添加一堆!!我显然不希望它为null。很高兴有需要*方法为我做这个没有丑陋!! s。"
https://www.reddit.com/r/androiddev/comments/80ork8/support_library_2710_has_been_released/duxp75h/