1

我有一个扩展 OverlayItem 以包含更多字段的类。我已经使用 PointOfInterest 类更改了程序中所有出现的 OverlayItem。

当我尝试运行适用于 OverlayItem 的同一程序时,在我的 ItemizedOverlay 类中调用populate()后,它会因 nullpointerException 而崩溃。日志打印出正确的值。这是它崩溃的方法。

protected void addOverlay(PointOfInterest pointOfInterest) {

    mapOverlays.add(pointOfInterest);
    setLastFocusedIndex(-1);
    Log.d("Add Overlay", pointOfInterest.getDescription());
    populate(); <-- Crashes here
}

和错误

12-06 17:29:03.610: E/AndroidRuntime(1822): java.lang.NullPointerException
12-06 17:29:03.610: E/AndroidRuntime(1822):     at com.google.android.maps.ItemizedOverlay.populate(ItemizedOverlay.java:312)
12-06 17:29:03.610: E/AndroidRuntime(1822):     at com.example.mapproject.OurItemizedOverlay.addOverlay(OurItemizedOverlay.java:108)
12-06 17:29:03.610: E/AndroidRuntime(1822):     at com.example.mapproject.MainActivity.addPointToMap(MainActivity.java:211)

有任何想法吗?谢谢 !

4

1 回答 1

0

弄清楚了,我没有提到传递给 addOverlay 方法的 PointOfInterest 是从 JSON 字符串创建的,因此包含的构造函数

super(point, title, snippet)

从未被调用。

我将此添加到似乎已对其进行排序的 addOverlay 方法中!

protected void addOverlay(PointOfInterest pointOfInterest) {

    PointOfInterest pointOfInterest2 = new PointOfInterest(pointOfInterest.title,pointOfInterest.title,pointOfInterest.type,pointOfInterest.point,pointOfInterest.privateField);
    mapOverlays.add(pointOfInterest2);
    setLastFocusedIndex(-1);
    Log.d("Add Overlay", pointOfInterest2.getSnippet());
    populate();

}
于 2012-12-06T20:13:27.837 回答