我有一个这样的视图模型:
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());
我得到一个空指针异常,我应该如何修改我的代码来获得值。
最佳答案
当实例化ObservableField时,默认值为null
。当EditText
修改该值(即使为空)时,它将被设置为非空值。但是,在此之前,它是空的。
通过为字段提供非空的初始值,很容易解决此问题:
public final ObservableField<String> email = new ObservableField<>("");
public final ObservableField<String> password = new ObservableField<>("");