1

我有一個類,它擴展OverlayItem包括更多的字段。我使用PointOfInterest類更改了程序中的所有OverlayItem事件。擴展OverlayItem導致程序崩潰與空指針異常

當我嘗試運行OverlayItem的相同程序時,在我的ItemizedOverlay類中調用填充()後,它崩潰並出現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) 

任何想法?謝謝 !

+0

錯誤是在行號312,所以你告訴哪些東西在行號312爲空? –

+0

我無權訪問該類,我將ItemizedOverlay擴展到OurItemizedOverlay – TomSelleck

+0

您可以在調用'setLastFocuedIndex(-1)'之前調用'populate()'並報告嗎? – tolgap

回答

0

想通了,我沒有提到的是,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(); 

} 
相關問題