【发布时间】:2019-03-07 20:50:50
【问题描述】:
所以我遇到的问题是 loadUserNameFromFirestore() 方法在 firestore db.collection.get() 查询完成执行之前执行 return 语句。我在 firestore db.collection.get() 查询之后和方法返回语句之前放置了日志。
private String loadUserNameFromFirestore(Appointment appointment) {
final StringBuilder userFullName = new StringBuilder();
String userUid = appointment.getAppointment_doctor_uid();
db.collection(Constants.FIRESTORE_DOCTOR).document(userUid)
.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
DocumentSnapshot documentSnapshot = task.getResult();
userFullName.append(documentSnapshot.getString(Constants.FIRESTORE_STAFF_TITLE)).append(" ");
userFullName.append(documentSnapshot.getString(Constants.FIRESTORE_STAFF_FNAME)).append(" ");
userFullName.append(documentSnapshot.getString(Constants.FIRESTORE_STAFF_LNAME));
Log.d("DEBUG_APP", userFullName.toString());
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
}
});
Log.d("DEBUG_APP", "Final: " + userFullName.toString());
return userFullName.toString();
}
以下是根据上述代码创建的日志。
10-03 02:43:30.561....: Final:
10-03 02:43:31.044....: Dr Naila Alam
如上所示,return 语句“First:”之前的日志首先执行,然后是 firestore 查询之后的日志“Dr Naila Alam”。
有没有办法确保在 firestore 完成执行之前不会调用 return 语句。非常感谢任何帮助。
【问题讨论】:
-
您现在无法返回尚未加载的内容。因此,请检查副本以了解您为什么会出现这种行为以及如何使用自定义回调来解决此问题。
-
抱歉,我没有看到副本。这确实有效!谢谢!但是,当我在 OnClick 方法中调用回调时,我无法使用 intent.putExtra(callBackData) 将数据放入意图中。在将数据放入意图之前,将首先调用 startActivity(),因此我不会在第二个活动中看到回调数据。 @AlexMamo
-
很高兴听到它有效:) 这似乎是另一个问题。为了遵守本社区的规则,请再次提出新问题,以便我和其他用户可以帮助您。
-
没问题,谢谢
标签: java android firebase google-cloud-firestore