Firebase в булевой функции - PullRequest
       3

Firebase в булевой функции

0 голосов
/ 13 октября 2019

Я работаю в приложении для Android, и у меня возникла проблема, которую я не могу решить, я попытался выполнить поиск в Google и сделать это по-другому, но я застрял. Вот мой код:

private FirebaseAuth mAuth;
private FirebaseFirestore db;
private Boolean complete=false;

public boolean createUser(final String prenom, final String nom, final String mail, final String pass) {
       RegisterActivity ra = new RegisterActivity();
       mAuth = FirebaseAuth.getInstance();
       db = FirebaseFirestore.getInstance();
       mAuth.createUserWithEmailAndPassword(mail, pass).addOnCompleteListener(ra, new OnCompleteListener<AuthResult>() {
             @Override
             public void onComplete(@NonNull Task<AuthResult> task) {
                    mAuth.getCurrentUser().sendEmailVerification();
                    Map<String, Object> user = new HashMap<>();
                    user.put("Mail", mail);
                    user.put("Nom", nom);
                    user.put("Prenom", prenom);
                    user.put("Rang", "Aucun");
                    user.put("Valide", false);
                    db.collection("users").document(mAuth.getCurrentUser().getUid()).set(user).addOnCompleteListener(new OnCompleteListener<Void>() {
                        @Override
                        public void onComplete(@NonNull Task<Void> task) {
                            complete=true;
                            Log.w("RESULT",complete.toString());
                        }
                    });
                }
        });
  Log.w("RESULT",complete.toString());
  return complete;
}

Я не знаю, почему моя функция возвращает false, в журнале сначала указывается «RESULT false», а после «RESULT true». Что не так?

1 Ответ

3 голосов
/ 13 октября 2019

Это довольно просто, на мой взгляд. Поскольку метод createUserWithEmailAndPassword () является асинхронным, код «выполняется», пока не достигнет второй последней строки кода. Там завершение все еще ложно, потому что другой метод onComplete () еще не отметил переменную как trueТак что это в основном асинхронная вещь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...