web-dev-qa-db-ja.com

データバインディングでEdittext値を取得する方法は?

私はそのようなViewModelを持っています:

public class LoginViewModel {

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

    public LoginViewModel() {

ビューに2つのeditTextと1つのボタンがあります。

<EditText
            Android:id="@+id/password"
            Android:text="@={login.email}"/>
<EditText
            Android:id="@+id/password"
            Android:text="@={login.password}"/>

<Button Android:onClick="onLoginClick"/>

私のアクティビティでは、ボタンがクリックされたときに2つのedittext値を出力したいと思います。

LoginActivityBinding loginActivityBinding = DataBindingUtil.setContentView(this, R.layout.activity_login);
        Log.e("password", ""+loginActivityBinding.getLogin().password.get());

Nullpointer Exceptionが発生します。値を取得するには、コードをどのように変更すればよいですか。

9
XXX

ObservableFieldをインスタンス化する場合、デフォルト値はnullです。 EditTextが値を変更すると(空の場合でも)、null以外の値に設定されます。ただし、それまではnullです。

フィールドにnull以外の初期値を指定することで、これを簡単に修正できます。

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