编译时Android数据绑定错误,参数为nullable parcelable

编译时Android数据绑定错误,参数为nullable parcelable,android,kotlin,android-navigation,android-safe-args,Android,Kotlin,Android Navigation,Android Safe Args,我想用安全参数将我创建的一个包裹类Payment,从一个片段传递到另一个片段,但它可以为null 我创建了com.example.Payment类型的参数,并将其设置为null。当我编译应用程序时,我得到一个错误,说类文本中的表达式有一个可为空的类型“Payment”,请使用!!在生成文件夹下的FragmentDirection中使类型不可为空 错误发生在这一行: @Suppress(“施放永远不会成功”) 类碎片私有构造函数( { 私有数据类GoToNew( val付款:付款? ):导

我想用安全参数将我创建的一个包裹类
Payment
,从一个片段传递到另一个片段,但它可以为null

我创建了
com.example.Payment
类型的参数,并将其设置为null。当我编译应用程序时,我得到一个错误,说类文本中的
表达式有一个可为空的类型“Payment”,请使用!!在生成文件夹下的
FragmentDirection
中使类型不可为空

错误发生在这一行:

@Suppress(“施放永远不会成功”)
类碎片私有构造函数(
{    
私有数据类GoToNew(
val付款:付款?
):导航方向{
重写fun getArguments():Bundle{
val result=Bundle()
如果(Parcelable::class.java.isAssignableFrom(Payment::class.java)){//尝试获取付款类时,此处发生错误
结果.可包裹(“付款”,此.付款是否可包裹?)
}如果(Serializable::class.java.isAssignableFrom(Payment::class.java)){//这里也有同样的错误
result.putSerializable(“付款”,此.Payment是否可序列化?)
}否则{
抛出UnsupportedOperationException(Payment::class.java.name)+
“必须实现Parcelable或Serializable,或者必须是枚举。”)//这里
}
返回结果
}
//...
}
我不知道我做错了什么,无法编辑该文件,因为它在生成文件夹下

编辑: 导航的xml代码如下:


在模块级渐变文件中更改
应用插件:“androidx.navigation.safeargs.kotlin”
应用插件:“androidx.navigation.safeargs”
。我已经尝试过这个插件,现在它工作正常。

更改您的

若要
您的“If”语句无法处理可为null的变量,请尝试以下
If(Parcelable::class.java.isAssignableFrom(Payment::class.java)!=null)
但我无法更改此文件,因为它是由编译器自动生成的,因此无法进行编辑。可以粘贴xml吗?我也面临同样的问题。希望有人尽快给出解决方案。