Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 科特林公司;数据绑定Int值空检查问题 这是我遇到过的最奇怪的问题。_Java_Android_Kotlin_Android Databinding - Fatal编程技术网

Java 科特林公司;数据绑定Int值空检查问题 这是我遇到过的最奇怪的问题。

Java 科特林公司;数据绑定Int值空检查问题 这是我遇到过的最奇怪的问题。,java,android,kotlin,android-databinding,Java,Android,Kotlin,Android Databinding,所以kotlin和数据绑定再次让我陷入困境。我从代码开始提问 模型类 data class ModelBottomItem( @StringRes val name: Int, @DrawableRes val image: Int, val gender: Int = 0, val enabled: Boolean = true, val disabledIconColor: Int = 0) : Base

所以kotlin和数据绑定再次让我陷入困境。我从代码开始提问

模型类

data class ModelBottomItem(
        @StringRes val name: Int,
        @DrawableRes val image: Int,
        val gender: Int = 0,
        val enabled: Boolean = true,
        val disabledIconColor: Int = 0)
    : BaseModel()
布局代码

<variable
    name="item"
    type="myModel"/>


<TextView
    android:text="@{item.gender == 0 ? @string/male : @string/female}"
    ...
    />
废话,废话

如果我更改
item.gender==null

那么代码就无法构建。它失败了,错误如下。
错误:不可比较的类型:int和
itemGenderJavaLangObjectNull=(itemGender)==(null);
从两方面理解问题。
  • 当我选中item.gender==null时,显示错误
    不可比较的类型:int和
  • 当我检查
    item.gender==0
    时,如果在运行时为0,则在空对象引用上的代码将崩溃,并说
    int java.lang.Integer.intValue()。即使您可以看到调试跟踪,我的模型项也是0,它不是
    **null**
    。甚至我也将默认值设置为gender,即
    val-gender:Int=0
    那么它怎么可能是null或0?

在这种情况下,请像这样使用toIntOrNull()

 item.gender.toString().toIntOrNull()
范例

    val numb=""
    val numb2="7"
    val print1=numb.toIntOrNull()
    println(print1) //out put is null
    val print2=numb2.toIntOrNull()
    println(print2) // output is 7
您的数据模型是否使用nullable Int

 gender: Int? = 0 as parameter
像这样

 item.gender.toString().toIntOrNull()
 data class ModelBottomItem(
    @StringRes val name: Int,
    @DrawableRes val image: Int,
    val gender: Int?= 0,
    val enabled: Boolean = true,
    val disabledIconColor: Int = 0)
: BaseModel()

在这种情况下,请像这样使用toIntOrNull()

 item.gender.toString().toIntOrNull()
范例

    val numb=""
    val numb2="7"
    val print1=numb.toIntOrNull()
    println(print1) //out put is null
    val print2=numb2.toIntOrNull()
    println(print2) // output is 7
您的数据模型是否使用nullable Int

 gender: Int? = 0 as parameter
像这样

 item.gender.toString().toIntOrNull()
 data class ModelBottomItem(
    @StringRes val name: Int,
    @DrawableRes val image: Int,
    val gender: Int?= 0,
    val enabled: Boolean = true,
    val disabledIconColor: Int = 0)
: BaseModel()

看起来您尚未在活动中正确调用ActivityBinding.setItem(您的_项)


尝试在活动中添加断点,以确认您没有将空项绑定到布局

看起来您没有在活动中正确调用ActivityBinding.setItem(您的_项)

尝试在活动中添加断点,以确认未将空项绑定到布局

此操作也有效:

android:someBinding="@{(Integer) null}"
这也有效:

android:someBinding="@{(Integer) null}"

stacktrace/错误是否提供了行号/属性名称?它可能是关于其他领域(不是性别)的吗?是的,我已经完全检查过了。它给我行号。stacktrace/错误是否给你行号/属性名?它可能是关于其他领域(不是性别)的吗?是的,我已经完全检查过了。它给了我电话号码。你试过这个吗<代码>***/数据绑定错误****消息:在类int中找不到方法toIntOrNull()
使用item.gender.toString().toIntOrNull()***/数据绑定错误****消息:在类intAlready发布的相关代码中找不到方法toString()。您可以尝试用这个创建一个示例代码。如果我采用java模型,就不会有问题,所有问题都是kotlin数据类的问题。您尝试过这个吗<代码>***/数据绑定错误****消息:在类int中找不到方法toIntOrNull()
使用item.gender.toString().toIntOrNull()***/数据绑定错误****消息:在类intAlready发布的相关代码中找不到方法toString()。您可以尝试用这个创建一个示例代码。如果我采用java模型,就不会有问题,所有问题都是kotlin数据类的问题。我已经添加了调试跟踪,这是我从调试中获得的。顺便说一下,它不是一个活动。我已经添加了调试跟踪,这是我从调试中获得的。顺便说一下,它不是一个活动。