从包中检索传递的参数时,为什么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 是何时首次添加或更新的。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...