【发布时间】:2017-11-28 06:38:27
【问题描述】:
val binding= DataBindingUtil.setContentView<ActivityMainBinding>(this@MainActivity,R.layout.activity_main)
视图模型
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 架构的新手。
实际上,我正在关注this link 在 mainActivity 中它正在调用 set login () 但是当我尝试调用时,它显示未解析的引用。 ——
【问题讨论】:
-
我不知道 kotlin,但我认为变量初始化中的“登录”和通过视图中的视图模型访问时的登录存在差异
-
我是否在此处发布我的 ViewModel 类(如果有助于理解)? @Shubham
-
@Shubham 实际上这是 ViewModel 的设置登录功能,但我在 ViewModel 中找不到任何 setLogin 功能。
-
其实我正在关注这个链接github.com/khakhranisagar/LoginModuleMVVM/tree/master/src/main/…这里在mainActivity中它正在调用set login()但是当我试图调用时,它显示了Unresolved references。
-
尝试将 name="Login" 更改为 name="login" 并关联查看器分配。因为您已经使用 Login 定义了变量名称,并且您正在通过 @{login.errorEmail} 访问,即 login
标签: android mvvm data-binding android-databinding