我正在使用电话号码允许用户注册,现在他们注销并想再次登录时,我具有与Uber相同的界面,因此他们必须验证其电话才能登录,但是我的代码无法正常工作,只能加载一个且只有一个用户,将整个数据库循环到最后一个用户,而不是if()返回true,它将忽略并遍历整个数据库
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
User user = snapshot.getValue(User.class);
//user.getUserPhone().matches(mobileNumber)
String ph = user.getUserPhone();
boolean matched = ph.contentEquals(mobileNumber);
if (!matched) {
signInWithPhoneAuthCredential(phoneAuthCredential);
} else {
Intent intent = new Intent(RegisterActivity.this, HomeActivity.class);
user = snapshot.getValue(User.class);
intent.putExtra("PhoneNumber", mobileNumber);
startActivity(intent);
}
}
答案 0 :(得分:0)
您可以尝试以下方法:
if (!matched) {
signInWithPhoneAuthCredential(phoneAuthCredential);
break; //add this to exit loop
}
答案 1 :(得分:0)
检查
中的条件后,您需要从整体for循环退出 if (!matched) {
signInWithPhoneAuthCredential(phoneAuthCredential);
// return;
} else {
Intent intent = new Intent(RegisterActivity.this,
HomeActivity.class);
user = snapshot.getValue(User.class);
intent.putExtra("PhoneNumber", mobileNumber);
startActivity(intent);
// return;
}
用户返回关键字的位置,您要在真正匹配后执行一些操作 两个数字。
答案 2 :(得分:0)
我通过在其他地方调用一个函数然后使用break来实现它;