【问题标题】:NullPointerException: in firebaseNullPointerException:在火力基地
【发布时间】:2020-11-12 13:49:52
【问题描述】:

我尝试将此添加到我的地图活动中,但出现此错误

java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“java.util.Iterator com.google.firebase.firestore.QuerySnapshot.iterator()”

mFireStore.collection("Locations").addSnapshotListener(new EventListener<QuerySnapshot>() {

    @Override
    public void onEvent(@Nullable QuerySnapshot value, @Nullable FirebaseFirestoreException error) {
        if (error != null) {
            Toast.makeText(MapActivity.this, "error in firebase" + error, Toast.LENGTH_SHORT).show();
        }

        for (DocumentSnapshot doc: value) {
            String name = doc.getString("name");
            String lat = doc.getString("latitude");
            String log = doc.getString("longitude");
            double v1 = Double.parseDouble(lat);
            double v2 = Double.parseDouble(log);
            LatLng latLng = new LatLng(v1, v2);
            mMap.addMarker(new MarkerOptions().position(latLng).title(name)).setIcon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ORANGE));
        }
    }
});

【问题讨论】:

  • 您可能没有错误,但您确定您从 firebase 获得了价值吗?

标签: java android firebase google-cloud-firestore


【解决方案1】:

onEvent 函数将被调用,要么 出现错误 查询快照。它永远不会同时收到。

在您的代码中您处理错误,然后尝试处理查询快照。这就是失败的原因,因为当您遇到错误时,您不会获得查询快照。

解决方法是处理错误后退出函数:

@Override
public void onEvent(@Nullable QuerySnapshot value, @Nullable FirebaseFirestoreException error) {
    if (error != null) {
        Toast.makeText(MapActivity.this, "error in firebase" + error, Toast.LENGTH_SHORT).show();
        return; // exit after handling error
    }

    for (DocumentSnapshot doc: value) {
        String name = doc.getString("name");
        String lat = doc.getString("latitude");
        String log = doc.getString("longitude");
        double v1 = Double.parseDouble(lat);
        double v2 = Double.parseDouble(log);
        LatLng latLng = new LatLng(v1, v2);
        mMap.addMarker(new MarkerOptions().position(latLng).title(name)).setIcon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ORANGE));
    }
}

【讨论】:

    猜你喜欢
    • 2016-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-05
    • 2016-08-03
    • 2021-05-04
    相关资源
    最近更新 更多