цикл for игнорирует вложенность, если Android Studio - PullRequest
0 голосов
/ 25 ноября 2018

Я использую номер телефона, чтобы позволить пользователям зарегистрироваться, и теперь, когда они выходят из системы и хотят снова войти, у меня такой же интерфейс, как у Uber, поэтому им нужно подтвердить свой телефон для входа в систему, но мой код не работает, он просто загружаетсяодин и только один пользователь, проходит по всей базе данных до последнего пользователя вместо if (), возвращающего true, он игнорирует и выполняет итерацию по всей базе данных db

                        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 голосов
/ 25 ноября 2018

Вам необходимо выйти из целого цикла 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;
                    }

месте возврата ключевого слова пользователя, где вы хотите выполнить некоторое выполнение после того, как true совпало с обоими числами.

0 голосов
/ 25 ноября 2018

Я достиг этого, вызвав функцию внутри, если еще, а затем используя break;

0 голосов
/ 25 ноября 2018

Вы можете попробовать это:

if (!matched) {
    signInWithPhoneAuthCredential(phoneAuthCredential);
    break; //add this to exit loop
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...