Kotlin android。绑定不更新数据
问题描述:
晚上好!我尝试在kotlin中使用绑定,但数据不会更新。所有的编译和工作,但是当用户改变文本并点击bsave - >我尝试从textEdit返回数据,并且数据没有更新。 TextEdit包含旧数据。在Java中它正在工作,但在KOTLIN我有问题。你可以帮我吗?Kotlin android。绑定不更新数据
这是我的方法onCreate,在这里我创建模型并绑定它。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this,R.layout.activity_fblogin)
auth = FirebaseAuth.getInstance()
setContentView(R.layout.activity_fblogin)
user = User("Test02", "123456")
binding?.setVariable(BR.user, user)
binding?.executePendingBindings()
loginButton.setOnClickListener{_ -> loginToSystem()}
signIn.setOnClickListener{_ -> showSignInActivity()}
}
private fun loginToSystem() {
binding?.executePendingBindings()
//showProgressDialog()
val email = binding?.userName?.text.toString().trim()
val password = binding?.userPass?.text.toString()
val email2 = user?.login
val password2 = user?.password
if (!checkValidateForm(email, password)) {
return
}
这是我的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>
<variable
name="user"
type="com.example.darkt.makeyouself.models.User"
/>
</data>
<android.support.constraint.ConstraintLayout
android:descendantFocusability="beforeDescendants"
android:fitsSystemWindows="true"
android:focusableInTouchMode="true"
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="@{user.login}"
app:layout_constraintBottom_toBottomOf="@+id/author"
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="@{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"
tools:text="Password"/>
<Button
android:id="@+id/signIn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:background="@color/green_main"
android:text="SignIn"
android:textColor="@color/white"
app:layout_constraintStart_toStartOf="@+id/userPass"
app:layout_constraintTop_toBottomOf="@+id/userPass" />
</android.support.constraint.ConstraintLayout>
</layout>
而且我的短型号:
data class User (val login: String, val password: String)
我怎样才能在用户更改后绑定刷新数据?
答
我找到错误!我的错误是重复的setContentView:
binding = DataBindingUtil.setContentView(this, R.layout.activity_fblogin) .... setContentView(R.layout.activity_fblogin)
当我删除第二个的setContentView,我固定我的问题