Расширенный OverlayItem вызывает сбой программы с NullPointerException

У меня есть класс, который расширяет OverlayItem, чтобы включить больше полей. Я изменил все вхождения OverlayItem в моей программе с помощью класса PointOfInterest.

Когда я пытаюсь запустить ту же программу, которая работала для OverlayItem, она вызывает сбой с nullpointerException после вызова populate () в моем классе ItemizedOverlay. Журнал распечатывает правильное значение. Вот метод, в котором это терпит крах.

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)

Есть идеи? Спасибо!

1 ответ

Решение

Поняв это, я не смог упомянуть, что PointOfInterest, передаваемый методу addOverlay, был создан из строки 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();

}
Другие вопросы по тегам