从包中检索传递的参数时,为什么 Android Studio 警告并建议使用 requireArguments() 而不是参数!!?
When retrieving passed arguments from a bundle, why does Android Studio warn and suggest using requireArguments() instead of arguments!!?
所以,正如标题所说,我正在尝试根据我正在使用 var args = GameWonFragmentArgs.fromBundle(arguments!!)
关注的文档从包中检索传递的参数。
但是 Android Studio 建议使用以下代码:
var args = GameWonFragmentArgs.fromBundle(requireArguments())
我查阅了 Android 片段文档,发现 requireArguments()
returns @NonNull Bundle 或 IllegalStateException。为什么 Android Studio 建议使用它,两者之间有什么区别?
此外,我找不到有关 fromBundle()
的相关文档。
在 androidx.fragment:fragment
中有一些 api 的变化
requireArguments() --- returns @NonNull Bundle 或抛出 IllegalStateException 的方法。
fromBundle(arguments!!) --- 这些情况下 App 可能会因为空指针异常而崩溃。如果参数为空,应用程序将崩溃。
根据 UseRequireInsteadOfGet
Lint 警告:
AndroidX added new "require____()" versions of common "get___()" APIs, such as getContext/getActivity/getArguments/etc. Rather than wrap these in something like requireNotNull(), using these APIs will allow the underlying component to try to tell you why it was null, and thus yield a better error message.
重要的是,错误消息总是提到 哪个片段 导致了问题,包括片段的 class 名称及其唯一 ID。这在将该 ID 与 Fragment's debug logging 相关联时特别有用,从而让您了解首次添加或更新该片段的时间。
所以,正如标题所说,我正在尝试根据我正在使用 var args = GameWonFragmentArgs.fromBundle(arguments!!)
关注的文档从包中检索传递的参数。
但是 Android Studio 建议使用以下代码:
var args = GameWonFragmentArgs.fromBundle(requireArguments())
我查阅了 Android 片段文档,发现 requireArguments()
returns @NonNull Bundle 或 IllegalStateException。为什么 Android Studio 建议使用它,两者之间有什么区别?
此外,我找不到有关 fromBundle()
的相关文档。
在 androidx.fragment:fragment
中有一些 api 的变化requireArguments() --- returns @NonNull Bundle 或抛出 IllegalStateException 的方法。
fromBundle(arguments!!) --- 这些情况下 App 可能会因为空指针异常而崩溃。如果参数为空,应用程序将崩溃。
根据 UseRequireInsteadOfGet
Lint 警告:
AndroidX added new "require____()" versions of common "get___()" APIs, such as getContext/getActivity/getArguments/etc. Rather than wrap these in something like requireNotNull(), using these APIs will allow the underlying component to try to tell you why it was null, and thus yield a better error message.
重要的是,错误消息总是提到 哪个片段 导致了问题,包括片段的 class 名称及其唯一 ID。这在将该 ID 与 Fragment's debug logging 相关联时特别有用,从而让您了解首次添加或更新该片段的时间。