我的应用程序中有一个注册页面,在注册时,我会检查该名称是否已在 firebase 中注册。如果名称已经存在,我会根据需要收到 toast 消息(“用户已存在”),但是如果有新条目,我可以完美注册,但我也会在注册后收到 toast 消息。
请参考以下代码:
mFirebaseDatabase = FirebaseDatabase.getInstance().getReference().child("Registration");
mFirebaseDatabase.orderByChild("uname").
equalTo(name.getSelectedItem().toString().trim()).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.getValue() == null) {
if (TextUtils.isEmpty(userId)) {
createUser(name.getSelectedItem().toString().trim(),
designation.getSelectedItem().toString().trim(),
phone.getText().toString().trim(),
email.getText().toString().trim(),
password.getText().toString().trim(),
email1.getText().toString().trim(),
phone1.getText().toString().trim(),
telephone.getText().toString().trim());
Intent login = new Intent(Register.this, Login.class);
startActivity(login);
}
} else {
Toast.makeText(Register.this, "User already Registered", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {}
});
所以注册后,我收到消息“用户已经注册”
我认为当您创建新用户并添加到 firebase 数据库时,onDataChange
监听器又被触发了一次。
你可以试试这个代码也许对你有帮助:
boolean isUserCreated = false;
mFirebaseDatabase....addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(...) {
if (dataSnapshot.getValue() == null) {
if (TextUtils.isEmpty(userId)) {
isUserCreated = true;
createUser(...)
}
} else if (!isUserCreated) {
Toast.makeText(Register.this, "User already Registered", Toast.LENGTH_SHORT).show();
}
}
...
});
注意:这段代码很简洁。您必须注意isUserCreated
变量及其用法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句