2017-09-23 9 views
-1

おはようございます!私はkotlinでバインディングを使用しようとしますが、データは更新されません。すべてコンパイルと作業ができますが、ユーザーがテキストを変更してbsaveをクリックすると、texteditからデータを返そうとしますが、データは更新されません。 TextEditには古いデータが含まれています。 Javaでは動作していますが、kotlinには問題があります。手伝って頂けますか?コトリンアンドロイド。バインディングはデータを更新しません

私の方法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) 

私は、ユーザーが変更した後、結合にデータを更新できますか?

答えて

0

エラーが見つかりました!私のミスがsetContentView複製されています。私は2番目setContentViewを削除したときに

binding = DataBindingUtil.setContentView(this, R.layout.activity_fblogin) .... setContentView(R.layout.activity_fblogin)

を、私は私の問題を修正し

関連する問題