如果Android Studio,for循环会忽略嵌套

时间:2018-11-25 07:30:26

标签: java android firebase-realtime-database

我正在使用电话号码允许用户注册,现在他们注销并想再次登录时,我具有与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);
                        }
                    }

See this

Wrong output

3 个答案:

答案 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来实现它;