【发布时间】:2021-02-04 21:13:14
【问题描述】:
我得到一个错误,我的监听器中的变量显示正确的值,但是当它离开时它只是一个空变量。
if (i.getStringExtra("where").equals("login")){
email = i.getStringExtra("email");
db.collection("users").whereEqualTo("email", email).get()
.addOnCompleteListener(task -> {
if (task.isSuccessful()) {
for (DocumentSnapshot document : task.getResult()) {
name = document.getString("name");
Log.d("username", name);
}
}
});
}else{
//anything
}
Log.d("username", name);
userName.setText(name);
Listener 内部的 Log 返回正确的值,而外来者给出一个空指针 excpetion println 需要一条消息。 尝试使用 this.name 而不是 name,仍然无效。
更新
我在输入 if 条件之前给变量名称一个值,并注意 if 之外的 Log.d 首先打印旧值,然后 if 内部的 Log.d 打印正确的值:
2021-02-05 13:29:06.791 27900-27900/com.example.pomodorotasks D/用户名:teste
2021-02-05 13:29:09.020 27900-27900/com.example.pomodorotasks D/用户名:Rafael Alves
“teste”旧值 “Rafael Alves”名称在侦听器内部接收的值
听者做它需要做的似乎需要一些时间,我不知道。
【问题讨论】:
-
这能回答你的问题吗? wait until firebase retrieves data
标签: firebase variables google-cloud-firestore