Java 数据绑定用户模型和登录
我试图在使用数据绑定时将用户模型合并到我的应用程序中。我正在尝试让用户使用firebase身份验证电子邮件和密码注册。但是当我的注册按钮被点击时,什么都没有发生 我有一种方法可以让我的登录活动使用我自己的自定义可观察字符串类,但我只是在尝试一种不同的方法 我的用户模型:Java 数据绑定用户模型和登录,java,android,android-databinding,Java,Android,Android Databinding,我试图在使用数据绑定时将用户模型合并到我的应用程序中。我正在尝试让用户使用firebase身份验证电子邮件和密码注册。但是当我的注册按钮被点击时,什么都没有发生 我有一种方法可以让我的登录活动使用我自己的自定义可观察字符串类,但我只是在尝试一种不同的方法 我的用户模型: public class User extends BaseObservable { private String email; private String password; private String confPass
public class User extends BaseObservable {
private String email;
private String password;
private String confPassword;
private String username;
@Bindable
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
notifyPropertyChanged(BR.email);
}
@Bindable
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
notifyPropertyChanged(BR.password);
}
@Bindable
public String getConfPassword() {
return confPassword;
}
public void setConfPassword(String confPassword) {
this.confPassword = confPassword;
notifyPropertyChanged(BR.confPassword);
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
注册视图模型:
public class SignUpViewModel extends ViewModel {
public void firebaseSignUp(String email, String password, String confPassword){
if (!TextUtils.isEmpty(email) && !TextUtils.isEmpty(password) && !TextUtils.isEmpty(confPassword)) {
if (android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
if (password.length() > 6) {
if (password.equals(confPassword)) {
FirebaseAuth.getInstance().createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
} else {
}
}
});
}
}
}
}
}
}
带有数据绑定的xml文件:
<layout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
<variable name="vModel"
type="com.jthomann.cff_mvvm1.viewModel.SignUpViewModel"/>
<variable name="activity"
type="com.jthomann.cff_mvvm1.view.SignUpActivity"/>
<variable name="userModel"
type="com.jthomann.cff_mvvm1.model.User"/>
<import type="android.view.View"/>
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/cff_bg_new"
tools:context="com.jthomann.cff_mvvm1.view.SignUpActivity"
tools:layout_editor_absoluteY="25dp">
<Button
android:id="@+id/signUpBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:background="@drawable/sign_up_btn_new"
android:textAlignment="center"
android:textColor="@android:color/white"
android:onClick="@{() -> activity.signUp()}"
app:layout_constraintEnd_toEndOf="@+id/signUpConfPass"
app:layout_constraintStart_toStartOf="@+id/signUpConfPass"
app:layout_constraintTop_toBottomOf="@+id/signUpConfPass" />
<EditText
android:id="@+id/signUpEmail"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="33dp"
android:ems="10"
android:inputType="textEmailAddress"
android:text="@={userModel.email}"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="@+id/tvEmail"
app:layout_constraintTop_toBottomOf="@+id/tvEmail"
tools:ignore="Autofill,LabelFor" />
<TextView
android:id="@+id/tvEmail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="44dp"
android:layout_marginTop="16dp"
android:background="@null"
android:fontFamily="@font/montserrat"
android:text="@string/email"
android:textColor="#01BAEF"
android:textSize="13sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/logo" />
<TextView
android:id="@+id/tvPassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:background="@null"
android:fontFamily="@font/montserrat"
android:text="@string/password"
android:textColor="#01BAEF"
android:textSize="13sp"
app:layout_constraintStart_toStartOf="@+id/signUpEmail"
app:layout_constraintTop_toBottomOf="@+id/signUpEmail" />
<TextView
android:id="@+id/tvConfPassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:background="@null"
android:fontFamily="@font/montserrat"
android:text="@string/confPass"
android:textColor="#01BAEF"
android:textSize="13sp"
app:layout_constraintStart_toStartOf="@+id/signUpPassword"
app:layout_constraintTop_toBottomOf="@+id/signUpPassword" />
<TextView
android:id="@+id/tvToSignIn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:background="@null"
android:fontFamily="@font/montserrat"
android:text="@string/sign_in"
android:textColor="@color/colorOffWhite"
android:textSize="14sp"
android:onClick="@{() -> activity.toSignIn()}"
app:layout_constraintEnd_toEndOf="@+id/signUpBtn"
app:layout_constraintStart_toStartOf="@+id/signUpBtn"
app:layout_constraintTop_toBottomOf="@+id/signUpBtn" />
<ImageView
android:id="@+id/logo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="8dp"
android:contentDescription="@null"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.503"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/cff_logo_new" />
<EditText
android:id="@+id/signUpPassword"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPassword"
android:labelFor="@id/signUpPassword"
android:text="@={userModel.password}"
app:layout_constraintEnd_toEndOf="@+id/signUpEmail"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="@+id/tvPassword"
app:layout_constraintTop_toBottomOf="@+id/tvPassword"
tools:ignore="Autofill" />
<EditText
android:id="@+id/signUpConfPass"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:ems="10"
android:labelFor="@id/signUpConfPass"
android:inputType="textPassword"
android:text="@={userModel.confPassword}"
app:layout_constraintEnd_toEndOf="@+id/signUpPassword"
app:layout_constraintStart_toStartOf="@+id/tvConfPassword"
app:layout_constraintTop_toBottomOf="@+id/tvConfPassword"
tools:ignore="Autofill" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
答案很好,我只是缺少一行代码:
signUpBinding.setUser(user);
在我添加了这个之后就可以工作了
signUpBinding.setUser(user);