2017-02-07 81 views
0

我有一個這樣的視圖模型:如何通過數據綁定獲取Edittext值?

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

我得到一個空指針異常,我應該如何修改我的代碼來獲取值。

回答

1

當您實例化ObservableField時,默認值爲null。當EditText修改該值(即使爲空)時,它將被設置爲非空值。但是,在此之前,它是空的。

這是很容易讓你的領域的一個非空初始值設定爲解決這個問題:

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