首页 > 解决方案 > 在Android DataBinding中如何从editText获取整数并通过Kotlin使用它

问题描述

我想在下面的示例中使用 Kotlin 在 Android 中使用 DataBinding 我有两个带有一个按钮的 EditText 和它们下方的两个 TextView,每当我单击按钮时,我都希望我在 EditTexts 中输入的文本将显示在两个 TextView 中。我有用户类(模型),如果这个类的两个字段是字符串,一切正常,我的代码正常工作,但我的问题是当一个字段是整数时,我得到这个错误:找不到符号导入 com.example.mydatabinding.databinding .ActivityMainBindingImpl;

如果一些机构可以帮助我,我们将不胜感激。

我的xml代码:

在此处输入图像描述

抱歉,这个平台对我来说根本不是用户友好的,我不能对所有 XML 代码使用 Ctrl K !!所以我每次都用 ctrl K 带一些照片来问问题,我很头疼!让我们继续

<androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <EditText
        android:id="@+id/user_name_edit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:ems="10"
        android:hint="name ?"
        android:inputType="textPersonName"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <EditText
        android:id="@+id/user_age_edit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:ems="10"
        android:hint="age ?"
        android:inputType="textPersonName"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/user_name_edit" />

    <Button
        android:id="@+id/apply_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="32dp"
        android:text="Button"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/user_age_edit" />

    <TextView
        android:id="@+id/user_name_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="32dp"
        android:text="@={myUser.name}"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/apply_btn" />

    <TextView
        android:id="@+id/user_age_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:text="@={myUser.age}"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/user_name_text" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

和用户类代码:

data class User (var name : String ="" , var age :Int =0) {

}

和 MainActivity 代码:

标签: androidkotlinandroid-databinding

解决方案


在您使用的 textView 中,android:text="@={myUser.age}"这是导致问题的原因,因为您myUser.age无法integerintegertextView 中设置值。

改变 :-

"@={myUser.age}"

@={Integer.toString(myUser.age)}

问题将得到解决。


推荐阅读