私はそのような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が発生します。値を取得するには、コードをどのように変更すればよいですか。
ObservableFieldをインスタンス化する場合、デフォルト値はnull
です。 EditText
が値を変更すると(空の場合でも)、null以外の値に設定されます。ただし、それまではnullです。
フィールドにnull以外の初期値を指定することで、これを簡単に修正できます。
public final ObservableField<String> email = new ObservableField<>("");
public final ObservableField<String> password = new ObservableField<>("");