我的问题是binding
是可行的,但不正确!当我在textfield
中输入新文字,然后尝试使用帮助textfield
从此binding
获取数据时,我会看到旧数据。我试图找到错误,但我无法做到。
我的activity_fblogin.xml
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
</data>
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/grey_main"
android:descendantFocusability="beforeDescendants"
android:fitsSystemWindows="true"
android:focusableInTouchMode="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:context="com.example.darkt.makeyouself.activities.FBLogin"
tools:ignore="MissingConstraints">
<EditText
android:id="@+id/userName"
android:layout_width="220dp"
android:layout_height="43dp"
android:ems="10"
android:inputType="textPersonName"
android:text="test01"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="Login"/>
<EditText
android:id="@+id/userPass"
android:layout_width="220dp"
android:layout_height="45dp"
android:layout_marginTop="25dp"
android:ems="10"
android:inputType="textPassword"
android:text="123456"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/userName"
tools:layout_editor_absoluteX="74dp"
tools:layout_editor_absoluteY="245dp"
tools:text="Password"/>
<Button
android:id="@+id/loginButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="Login"
android:textColor="@color/green_main"
app:layout_constraintEnd_toEndOf="@+id/userPass"
app:layout_constraintTop_toBottomOf="@+id/userPass" />
</android.support.constraint.ConstraintLayout>
</layout>
这是kotlin
的{{1}}课程。我试图解决这个问题,但是......请给我一个想法!
fblogin_activity
答案 0 :(得分:0)
您的布局xml中没有任何内容实际使用数据绑定。
首先在您的标记中,您需要定义一个对象来引用数据绑定。例如:
<data>
<variable name="user" type="com.myapp.User"/>
</data>
在用户名/密码字段中,您需要为文本字段
引用此用户<EditText
android:id="@+id/userName"
android:layout_width="220dp"
android:layout_height="43dp"
android:ems="10"
android:inputType="textPersonName"
android:text="@={user.username}"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
<EditText
android:id="@+id/userPass"
android:layout_width="220dp"
android:layout_height="45dp"
android:layout_marginTop="25dp"
android:ems="10"
android:inputType="textPassword"
android:text="@={user.password}"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/userName"
tools:layout_editor_absoluteX="74dp"
tools:layout_editor_absoluteY="245dp"/>
请注意文本字段中的@ = {user.username}。对于类用户的每个属性,您需要指定一个setter / getter。 @ =表示,在此值更改时更新基础对象。
在“executePendingBindings”之前,您需要执行以下操作:
val user = User()
binding.setVariable(BR.user, user)
binding.executePendingBindings()
那么你应该好好去。