在返回if语句的其他部分没有完成?(android和firebase)
对于注册场景,我有下面这样的方法,创建后将toast成功创建帐户,但之后再次显示PartToast是否也像电话号码已经存在在返回if语句的其他部分没有完成?(android和firebase),android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,对于注册场景,我有下面这样的方法,创建后将toast成功创建帐户,但之后再次显示PartToast是否也像电话号码已经存在 private void CreateAccount(String name, String phone, String password) { if(TextUtils.isEmpty(name) || TextUtils.isEmpty(phone) || TextUtils.isEmpty(password)) { Toast
private void CreateAccount(String name, String phone, String password) {
if(TextUtils.isEmpty(name) || TextUtils.isEmpty(phone) || TextUtils.isEmpty(password)) {
Toast.makeText(SignUpActivity.this, "All fields required", Toast.LENGTH_LONG).show();
} else {
FirebaseDatabase database = FirebaseDatabase.getInstance();
final DatabaseReference table_user = database.getReference("User");
final ProgressDialog dialog = new ProgressDialog(SignUpActivity.this);
dialog.setMessage("Please wait...");
dialog.show();
table_user.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.child(edtPhone.getText().toString()).exists()) {
dialog.dismiss();
Toast.makeText(SignUpActivity.this, "Phone Number Already Exists", Toast.LENGTH_SHORT).show();
} else {
dialog.dismiss();
User user = new User(edtName.getText().toString(), edtPassword.getText().toString());
table_user.child(edtPhone.getText().toString()).setValue(user);
Toast.makeText(SignUpActivity.this, "Account Created Successfully", Toast.LENGTH_SHORT).show();
Intent homeIntent = new Intent(SignUpActivity.this, HomeActivity.class);
homeIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(homeIntent);
finish();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}
我做错了什么?有人能告诉我发生了什么以及如何修复吗
这个
你试过这样吗
table_user.child(edtPhone.getText().toString()).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.getValue() != null) {
dialog.dismiss();
Toast.makeText(SignUpActivity.this, "Phone Number Already Exists", Toast.LENGTH_SHORT).show();
} else {
dialog.dismiss();
User user = new User(edtName.getText().toString(), edtPassword.getText().toString());
table_user.child(edtPhone.getText().toString()).setValue(user);
Toast.makeText(SignUpActivity.this, "Account Created Successfully", Toast.LENGTH_SHORT).show();
Intent homeIntent = new Intent(SignUpActivity.this, HomeActivity.class);
homeIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(homeIntent);
finish();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
addValueEventListener将调用该节点中发生的每个更改use addListenerForSingleValueEvent