我有一个像这样的ViewModel:
public class LoginViewModel {
public final ObservableField<String> email = new ObservableField<>();
public final ObservableField<String> password = new ObservableField<>();
public LoginViewModel() {
我的视图中有两个editText和一个按钮:
<EditText
android:id="@+id/password"
android:text="@={login.email}"/>
<EditText
android:id="@+id/password"
android:text="@={login.password}"/>
<Button android:onClick="onLoginClick"/>
在我的活动中,想要在点击按钮时打印两个edittext值,如下所示:
LoginActivityBinding loginActivityBinding = DataBindingUtil.setContentView(this, R.layout.activity_login);
Log.e("password", ""+loginActivityBinding.getLogin().password.get());
我得到一个Nullpointer异常,我应该如何修改我的代码来获取值。
答案 0 :(得分:8)
实例化ObservableField时,默认值为null
。当EditText
修改值(即使为空)时,它将被设置为非空值。但是,在此之前,它是空的。
通过为字段提供非空的初始值来轻松解决此问题:
public final ObservableField<String> email = new ObservableField<>("");
public final ObservableField<String> password = new ObservableField<>("");
答案 1 :(得分:0)
抱歉,我只想补充一点,您的 ViewModel 类必须从 {{1}}
继承 ViewModel()