java - 如何在 onComplete 方法中设置变量?
问题描述
目前我正在尝试将值传递给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 是一个回调。它将在将来的某个时候调用,而不是立即调用。你无法知道那会是什么时候,因为它正在等待某些任务完成。任何需要 onComplete 结果的代码都需要在 onComplete 函数中调用,而不是在其他地方调用。
推荐阅读
- microsoft-graph-api - 通过图表设置 AllowGuestsToAccessGroups
- python-3.x - 将数据框中的 0 替换为 1
- sql - Sql - 我正在尝试计算(总和)值介于数字范围之间的列
- sql - 使用自由文本 sql 服务器的电子邮件 ID 过滤器
- amazon-web-services - 如何使用 aws cdk 生成 IAM 服务特定凭证?
- flutter - 颤振:使用等待时的区别
- php - 当我回显当前会话值时,前一个会话值消失了,我希望它也显示要做什么
- sql - 尝试连接列行值时将数据类型 varchar 转换为 bigint 时出错
- javascript - JS - 其他 SO 帖子说“this”应该保留在内联函数中。我误解了什么?
- html - 两行下拉菜单