Android支持库27.1.0新方法requireActivity(),requireContext()

时间:2018-03-14 23:36:09

标签: android android-fragments android-support-library

根据支持库更改日志和Fragment类文档(https://developer.android.com/reference/android/support/v4/app/Fragment.html),现在有新的方法,如requreActivity()和requireContext()。

与getActivity()和getContext()相比,这些方法的目的是什么,因为它们仍然可以抛出IllegalStateExceptions?当找不到活动或上下文时,这是否优选返回null?我应该简单地用requireActivity()替换每个getActivity()吗?

1 个答案:

答案 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/