我的目标是在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) {
}
这是我的数据库结构的屏幕截图,没有纬度&经度输入:
以下是保存位置时的情况:
答案 0 :(得分:0)
这意味着snapshot.child("latitude")
中存储的数据不是有效的Double
。
我能想到的最有可能的事情(没有看到你的实际数据)是你有一个字符串,其中包含值。在这种情况下,您可以通过以下方式获取双倍值:
latt = Double.valueOf(snapshot.child("latitude").getValue(String.class));