我在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”之后说。怎么了 ?
最佳答案
在我看来,这很简单。由于createUserWithEmailAndPassword()是异步的,因此代码将“运行”直到命中代码的第二行。由于其他方法onComplete()尚未将变量标记为true,因此complete仍然为false。所以它基本上是异步的东西。
关于java - Firebase的 boolean 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58367081/