我有一个这样的视图模型:

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<>("");

08-18 17:54