【发布时间】:2020-12-31 00:11:05
【问题描述】:
目前我正在尝试将值传递给 onComplete() 方法内的字符串变量。但是,当我尝试在方法之外使用它时,它什么也没传递。
这是我的onComplete 代码:
docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if(task.isSuccessful()){
DocumentSnapshot document = task.getResult();
if(document.exists()){
Log.d(TAG,"User full name: " + document.getString("FullName"));
Log.d(TAG, "User email: " + document.getString("Email"));
donorFullName = document.getString("FullName");
donorEmail = document.getString("Email");
Log.d(TAG, "donorFullName set: " + donorFullName);
Log.d(TAG, "donorEmail set: " + donorEmail);
}
}
}
});
这是我尝试在onComplete之外使用它:
BookingInformation bookingInformation = new BookingInformation();
Log.d(TAG, "donorFullName bookingInformation: " + donorFullName);
Log.d(TAG, "donorEmail bookingInformation: " + donorEmail);
bookingInformation.setDonorName(donorFullName);
bookingInformation.setDonorEmail(donorEmail);
这是我的日志:
【问题讨论】:
-
很明显,调用是在onComplete中完成的……不是在addOnCompleteListener之后……我们称之为异步调用
-
@Selvin 你能看看我的接口解决方案吗?
donorFullName和donorEmail仍然是空值。
标签: java android firebase google-cloud-firestore