如何使用数据绑定获取Edittext值?

时间:2017-02-07 08:59:05

标签: android android-databinding

我有一个像这样的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异常,我应该如何修改我的代码来获取值。

2 个答案:

答案 0 :(得分:8)

实例化ObservableField时,默认值为null。当EditText修改值(即使为空)时,它将被设置为非空值。但是,在此之前,它是空的。

通过为字段提供非空的初始值来轻松解决此问题:

public final ObservableField<String> email =  new ObservableField<>("");
public final ObservableField<String> password = new ObservableField<>("");

答案 1 :(得分:0)

抱歉,我只想补充一点,您的 ViewModel 类必须从 {{1}}

继承 ViewModel()