从包中检索传递的参数时,为什么Android Studio会警告并建议使用requireArguments而不是参数!!

问题描述

因此,就像标题中所说的那样,我正在尝试使用var args = GameWonFragmentArgs.fromBundle(arguments!!)根据我要遵循的文档从捆绑中检索传递的参数。 但是Android Studio建议使用以下代码var args = GameWonFragmentArgs.fromBundle(requireArguments())

我查阅了Fragment的Android文档,发现requireArguments()返回了@NonNull Bundle或IllegalStateException。为什么Android Studio建议使用它,两者之间有什么区别?

此外,我找不到与fromBundle()相关的文档。

解决方法

androidx.fragment:fragment中有一些api更改

requireArguments() ---返回@NonNull捆绑包或引发IllegalStateException的方法。

fromBundle(arguments !!)---这些情况下,App可能由于Null指针异常而崩溃。如果参数为null,则应用程序将崩溃。

,

根据 UseRequireInsteadOfGet Lint 警告:

AndroidX 添加了常见的“get___()”API 的新“require____()”版本,例如 getContext/getActivity/getArguments/等。使用这些 API 将允许底层组件尝试告诉您为什么它为空,而不是将它们包装在诸如 requireNotNull() 之类的东西中,从而产生更好的错误消息。

重要的是,错误消息总是提到哪个片段导致了问题,包括片段的类名及其唯一 ID。这在将该 ID 与 Fragment's debug logging 相关联时特别有用,从而让您了解该 Fragment 是何时首次添加或更新的。