android - 完成 Querysnapshot 任务后如何启动新的 Intent?
问题描述
我使用了 OnSuccessListener 从 firestore 数据库中获取数据。我想在 Fetching Data Task 完成执行后开始一个新的 Intent。但是意图将在完成任务之前启动。有没有办法解决这个问题?
db.collection("users/user/driver").get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
@Override
public void onSuccess(QuerySnapshot queryDocumentSnapshots1) {
if (!queryDocumentSnapshots1.isEmpty()) {
List<DocumentSnapshot> list1 = queryDocumentSnapshots1.getDocuments();
for (final DocumentSnapshot d1 : list1) {
String driverId = d1.getId();
db.collection("users/user/driver").document(driverId).collection("checkpoints").get()
.addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
@Override
public void onSuccess(QuerySnapshot queryDocumentSnapshots2) {
// Some Code
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
}
});
}
}
dialog.dismiss();
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
}
}
);
Intent intent = new Intent(PassengerRouteSearchActivity.this,PassengerRouteSearch2Activity.class);
intent.putStringArrayListExtra("filteredRoutes",filteredRoutes);
startActivity(intent);
解决方案
您必须在内部传递意图onSuccess
。然后它将按您的预期工作..
db.collection("users/user/driver").get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
@Override
public void onSuccess(QuerySnapshot queryDocumentSnapshots1) {
if (!queryDocumentSnapshots1.isEmpty()) {
List<DocumentSnapshot> list1 = queryDocumentSnapshots1.getDocuments();
for (final DocumentSnapshot d1 : list1) {
String driverId = d1.getId();
db.collection("users/user/driver").document(driverId).collection("checkpoints").get()
.addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
@Override
public void onSuccess(QuerySnapshot queryDocumentSnapshots2) {
// Your Code.
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
}
});
}
Intent intent = new Intent(PassengerRouteSearchActivity.this,PassengerRouteSearch2Activity.class);
intent.putStringArrayListExtra("filteredRoutes",filteredRoutes);
startActivity(intent);
}
dialog.dismiss();
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
}
});
推荐阅读
- ms-access - Ms Access 将报告作为电子邮件正文中的图像发送电子邮件
- scala - 多项目 sbt 的测试报告器
- jquery - 删除 div 和一个没有内容的
- javascript - 在 jQuery 中获取提交的表单类 (materializeCSS & Laravel)
- python - ml-engine - 没有名为 trainer 的模块
- sql - SQL Server Pivot - 无法按列添加
- ios - hyperledger 用户如何通过 iOS 应用加入业务网络?
- ruby-on-rails - 如何在rails的同一个表中创建多对多
- mysql - 查询时间过长且未使用索引
- powershell - 使用 -Filepath 参数通过 Powershell ScheduledJob 调用 $PSScriptRoot 时为空