我正在尝试修改我的应用程序以使用MVVM。现在,我正在尝试创建一个简单的“密码重置”页面,以获取文本字段的值:电子邮件地址字段。不幸的是,我的电子邮件字段仍然为空。该视图模型可以正常访问onResetPassword。
任何帮助将不胜感激。
ForgotPasswordViewModel.java
public class ForgotPasswordViewModel extends ViewModel {
public final ObservableField<String> email = new ObservableField<>();
public void onResetPassword() {
Log.i("PASSWORD", "xxx -> " + email.get());
}
}
activity_forgot_password.xml
<data>
<variable
name="viewModel"
type="com.example.foo.viewModels.ForgotPasswordViewModel" />
</data>
<RelativeLayout
android:id="@+id/loginLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activities.LoginActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="15dp">
<EditText
android:inputType="textEmailAddress|textNoSuggestions"
android:text="@{viewModel.email}"
android:hint="@string/email" />
<Button
android:text="Login"
android:onClick="@{(v) -> viewModel.onResetPassword()}" />
</LinearLayout>
</RelativeLayout>
</layout>
答案 0 :(得分:1)
如果您希望从EditText
到email
字段中输入内容,则需要使用双向绑定...这意味着您需要使用=
:>
android:text="@={viewModel.email}"
现在,您正在使用单向绑定,该绑定将EditText
的内容填充到email
中,但不会随着用户的更改而更新email
。