由于空对象错误,无法保存位置

时间:2018-04-05 15:37:49

标签: android google-maps firebase firebase-realtime-database

我的目标是在firebase数据库中保存并从Google地图中检索位置。当我尝试加载我应该保存位置的地图时,我的应用程序崩溃了。它不断返回错误:

  

java.lang.NullPointerException:尝试调用虚方法   ' double java.lang.Double.doubleValue()'在空对象引用上

这是发生错误的代码部分:

profDatabase.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot snapshot : dataSnapshot.getChildren()) {
            latt = snapshot.child("latitude").getValue(Double.class); //This is where the error happens
            longg = snapshot.child("longitude").getValue(Double.class);
            String stallname = snapshot.child("StallName").getValue().toString();

            LatLng newLocation = new LatLng(latt, longg);

            mMap.addMarker(new MarkerOptions()
              .position(newLocation)
              .title(stallname));
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
    }

这是我的数据库结构的屏幕截图,没有纬度&经度输入:

without latlng

以下是保存位置时的情况:

saved location

1 个答案:

答案 0 :(得分:0)

这意味着snapshot.child("latitude")中存储的数据不是有效的Double

我能想到的最有可能的事情(没有看到你的实际数据)是你有一个字符串,其中包含值。在这种情况下,您可以通过以下方式获取双倍值:

latt = Double.valueOf(snapshot.child("latitude").getValue(String.class));