2017-06-25 7 views
-1
でMVVMアーキテクチャを使用してのViewModelに
val binding= DataBindingUtil.setContentView<ActivityMainBinding>([email protected],R.layout.activity_main) 

をデータをバインドするViewModelにどのようにAndroidの

var viewModel:LoginViewModel = LoginViewModel("Enter Email Address","Enter password","Log-in") 

が、私はこの

binding.Login=viewModel 

のようにやっているときには、ログインしてポイントや未解決の参照を言います。可能エラーの可能性があり何

activity_main.xml

<data> 

    <variable 
     name="Login" 
     type="com.example.itstym.logina.LoginViewModel" /> 

    <variable 
     name="clickListener" 
     type="com.example.itstym.logina.interface.loginClickListener" /> 

</data> 


<android.support.constraint.ConstraintLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <TextView 
     android:textStyle="bold" 
     android:id="@+id/textView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Welcome, Back" 
     android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium" 
     app:layout_constraintEnd_toEndOf="parent" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintStart_toStartOf="parent" 
     app:layout_constraintTop_toTopOf="parent" 
     android:layout_marginTop="24dp"/> 

    <EditText 
     app:error="@{login.errorEmail}" 
     android:hint="@{login.emailHint}" 
     android:text="@{login.userEmailAddress}" 
     android:id="@+id/user_email_address" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginEnd="8dp" 
     android:ems="10" 
     android:inputType="textEmailAddress" 
     app:layout_constraintEnd_toEndOf="parent" 
     app:layout_constraintLeft_toLeftOf="parent" 
     android:layout_marginTop="24dp" 
     app:layout_constraintTop_toBottomOf="@+id/textView" 
     android:layout_marginStart="8dp"/> 

    <EditText 
     app:error="@{login.errorPassword}" 
     android:text="@{login.userPassword}" 
     android:hint="@{login.passwordHint}" 
     android:id="@+id/user_password" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginEnd="8dp" 
     android:layout_marginStart="8dp" 
     android:layout_marginTop="16dp" 
     android:ems="10" 
     android:inputType="textPassword" 
     app:layout_constraintEnd_toEndOf="parent" 
     app:layout_constraintStart_toStartOf="parent" 
     app:layout_constraintTop_toBottomOf="@+id/user_email_address"/> 

    <Button 
     android:onClick="@{(v)->clickListener.onSubmitButtonClick()}" 
     android:text="@{login.loginButtonText}" 
     android:id="@+id/login_submit" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="32dp" 
     app:layout_constraintTop_toBottomOf="@+id/user_password" 
     app:layout_constraintStart_toStartOf="parent" 
     android:layout_marginStart="8dp" 
     app:layout_constraintEnd_toEndOf="parent" 
     android:layout_marginEnd="8dp"/> 

    <TextView 
     android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium" 
     android:id="@+id/textView2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Or Sign In" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     android:layout_marginTop="24dp" 
     app:layout_constraintTop_toBottomOf="@+id/login_submit"/> 

    <Button 
     android:id="@+id/button2" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="log in with google plus" 
     app:layout_constraintStart_toStartOf="parent" 
     app:layout_constraintEnd_toEndOf="parent" 
     app:layout_constraintHorizontal_bias="0.0" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     android:layout_marginTop="16dp" 
     app:layout_constraintTop_toBottomOf="@+id/textView2" 
     android:layout_marginStart="24dp" 
     android:layout_marginEnd="24dp"/> 

    <Button 
     android:id="@+id/button3" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="log in with facebook" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintStart_toStartOf="parent" 
     android:layout_marginStart="24dp" 
     android:layout_marginEnd="24dp" 
     app:layout_constraintEnd_toEndOf="parent" 
     android:layout_marginTop="16dp" 
     app:layout_constraintTop_toBottomOf="@+id/button2"/> 
</android.support.constraint.ConstraintLayout> 

?ここでは、viewModelクラスのインスタンスをxmlデータ変数に渡します。

私はMVVMアーキテクチャの初心者です。

実は、私はmainActivity。ここthis linkを以下の午前には、(セットのログインを呼び出している)が、私は呼び出ししようとしているとき、それは、未解決の参照を示します。 - あなたが結合

binding.setLogin(viewModel); 

データを以下の通りです

+0

私はkotlinを知らないけど、変数の初期化とビューにビューモデルを介してアクセスする際に "Login"の違いがあると思う。 – Killer

+0

ViewModelクラスをここに投稿するか? @Shubham –

+0

@ Shubham実際には、ViewModelのログイン機能が設定されていますが、ViewModelでsetLogin関数を見つけることができません。 –

答えて

0

その例で行うようにあなたがやるべきことは、setLogin()activity_main.xml

<variable 
     name="Login" 
     type="com.example.itstym.logina.LoginViewModel" /> 
で宣言されたこの変数の
方法を作成します

同じエラーが発生する場合は、変数のパッケージ名と宣言されたLoginViewModelクラスのスペルを確認してください。

関連する問題