gpt4 book ai didi

android - Kotlin “toString()” 在 Android 数据绑定(bind)中不可用

转载 作者:行者123 更新时间:2023-12-02 13:10:32 27 4
gpt4 key购买 nike

刚学DataBinding并找出强大的内置toString()来自 Kotlin 的不可用:

<layout 
xmlns:android="http://schemas.android.com/apk/res/android">

<data>
<variable
name="student"
type="com.example.databindingtest2.Student" />

</data>

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{student.name}"
android:textColor="@android:color/black"
android:textSize="30sp" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="@{student.age.toString()}" //doesn't work, age is integer
android:textColor="@android:color/black"
android:textSize="30sp" />

</layout>
我知道 String.valueOf()会起作用,但这不是 Kotlin 的方式。任何帮助,将不胜感激。

最佳答案

doesn't work, age is integer


Java 或 Kotlin 中都没有名为 integer 的类型.我猜 age是 Kotlin Int .

cannot find method toString() in class int


数据绑定(bind)是用 Java 实现的,而不是 Kotlin。 Java/Kotlin 互操作性与数据绑定(bind)编译器相结合,似乎正在转换 Kotlin Int进入 Java int原始类型。 Java 原语不扩展 Object并且没有 toString() .
就个人而言,我建议不要投资于数据绑定(bind)。 Jetpack Compose 将在一年左右的时间内淘汰数据绑定(bind)。
如果您仍然希望使用数据绑定(bind),最简单的解决方案是 String.valueOf() .当您说“这不是 Kotlin 方式”时,您使用的是数据绑定(bind)生成的 Java,而不是 Kotlin。
如果您仍然希望使用数据绑定(bind),并且您坚持必须使用 toString() ...尝试 @{Integer.valueOf(student.age).toString()} . Integer.valueOf()会给你一个Java Integer实例拳击你的 int , 和 Integer有一个 toString()方法。这仍然与 Kotlin 无关,但它会让你使用 toString() .

关于android - Kotlin “toString()” 在 Android 数据绑定(bind)中不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64185390/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com