2017-02-07 3 views
0

내가 그런 뷰 모델이 있습니다데이터 바인딩을 사용하여 편집 텍스트 값을 가져 오는 방법은 무엇입니까?

public class LoginViewModel { 

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

    public LoginViewModel() { 

을 나는이 두 글고 내보기에 하나 개의 버튼 : 내 활동에

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

<Button android:onClick="onLoginClick"/> 

버튼을 클릭 두 글고 값을 인쇄하고 싶은 뭔가 그렇게 :

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

나는 Nullpointer 예외를 얻을, 내가 값을 얻을하려면 코드를 수정하는 방법.

답변

1

ObservableField를 인스턴스화하면 기본값은 null입니다. EditText이 값을 수정하면 (비어 있더라도) 값은 널이 아닌 값으로 설정됩니다. 그러나 그때까지는 null입니다.

당신의 필드를 null 이외의 초기 값을 제공하여이 문제를 해결하기 쉽습니다 :

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