Когда вы перечитываете свой код, он не станет странным, но ожидается.Вы не получите userName
до тех пор, пока generateUserName
не завершит выполнение следующего кода:
private void generateUserName(){
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
db = FirebaseFirestore.getInstance();
db.collection("users").document(user.getEmail())
.get()
.addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
userName = task.getResult().get("name").toString();
}
});
}
Вы можете видеть, что вы ждете userName внутри OnCompleteListener
, который работает асинхронно .
Итак, вам нужно выполнить другой код после того, как у вас будет значение userName.Как то так:
private void generateUserName(){
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
db = FirebaseFirestore.getInstance();
db.collection("users").document(user.getEmail())
.get()
.addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
userName = task.getResult().get("name").toString();
doSomethingAfterFoundUserName(userName);
}
});
}
private void doSomethingAfterFoundUserName(String userName) {
// Get current user
// check for current user
// etc..
}