Android-kotlin-binding не обновляет свойства

Моя проблема в том, что 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> 

Это мой класс fblogin_activity для fblogin_activity . Я пытался решить эту проблему, но … Дайте мне понять, пожалуйста!

 package com.example.darkt.makeyouself.activities class FBLogin : AppCompatActivity() { private var binding: ActivityFbloginBinding? = null private var auth: FirebaseAuth? = null private var dbHelper: FirebaseHelper? =null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = DataBindingUtil.setContentView(this, R.layout.activity_fblogin) auth = FirebaseAuth.getInstance() dbHelper = FirebaseHelper() setContentView(R.layout.activity_fblogin) binding?.executePendingBindings() signIn.setOnClickListener{_ -> showSignInActivity()} } private fun loginToSystem() { val email = binding?.userName?.text.toString().trim() val password = binding?.userPass?.text.toString() binding?.executePendingBindings() Toast.makeText(this, email, Toast.LENGTH_SHORT).show() Toast.makeText(this, password, Toast.LENGTH_SHORT).show() } } 

Пример ошибки

    В вашем макете 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} в текстовом поле. Для каждого свойства пользователя класса вам нужно указать установщик / получатель. @ = означает обновление базового объекта при изменении этого значения.

    перед вашим «executePendingBindings» вам нужно будет сделать что-то вроде этого:

     val user = User() binding.setVariable(BR.user, user) binding.executePendingBindings() 

    то вам должно быть хорошо идти.