2 回答
TA贡献1757条经验 获得超8个赞
在关于获取数据的官方文档中,您可以task像这样从对象中获取异常:
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, "DocumentSnapshot data: " + document.getData());
} else {
Log.d(TAG, "No such document");
}
} else {
//Log the error if the task is not successful
Log.d(TAG, "get failed with ", task.getException());
}
}
});
请记住,任务是指任务所complete代表的工作完成时,无论其success或failure。可能有也可能没有错误,你必须检查一下。另一方面,当任务所代表的工作按预期完成且没有错误时,任务就是“成功的”。
正如@Raj 在他的回答中提到的,您也可以使用addOnFailureListener但请注意,如果网络连接丢失(用户设备上没有网络连接),则既onSuccess()不会onFailure()触发,也不会触发。这种行为是有道理的,因为只有在 Firebase 服务器上提交(或拒绝)数据时才认为任务已完成。onComplete(Task<T> task)方法也仅在任务完成时调用。因此,在没有互联网连接的情况下,两者都不会onComplete被触发。
TA贡献1946条经验 获得超4个赞
您可以使用 Firestore 的 onFailureListener() 方法并在获取、设置或更新数据时获取错误。在这个例子中,我在设置数据中使用了它:-
firestore.collection("User").document(uid).set(user).addOnSuccessListener(this, new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid)
{
//Data Saved Successfully
}
})
.addOnFailureListener(this, new OnFailureListener() {
@Override
public void onFailure(Exception e)
{
//Toast error using method -> e.getMessage()
}
});
添加回答
举报