问题描述
因此,就像标题中所说的那样,我正在尝试使用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 是何时首次添加或更新的。