2010-08-27 4 views
1

Я разрабатываю приложение для парижского метро. Одна из функций - это карта, на которой вы можете щелкнуть по станциям метро и посмотреть, что такое линии метро, ​​и когда следующие 4 поезда на этой станции.Проблема с draw() на MapView ItemizedOverlay

Я создал, следовательно, классы MapActivity и ItemizedOverlay.

На моем устройстве он работает отлично, но я получаю несколько журналов от пользователей с крахом, и я действительно не понимаю, что случилось.

Активность моей карты добавляет ОДИН ItemizedOverlay, который отображает голубую точку для текущего местоположения пользователя. Этот оверлей также прослушивает onTap, который в зависимости от координат крана будет пытаться найти станции метро (для которых я знаю координаты lat/lon). Это прекрасно работает.

Стек следов аварии является:

java.lang.NullPointerException 
at com.google.android.maps.OverlayBundle.draw(OverlayBundle.java:42) 
at com.google.android.maps.MapView.onDraw(MapView.java:494) 
at android.view.View.draw(View.java:6535) 
at android.view.ViewGroup.drawChild(ViewGroup.java:1531) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258) 
at android.view.ViewGroup.drawChild(ViewGroup.java:1529) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258) 
at android.view.View.draw(View.java:6538) 
at android.widget.FrameLayout.draw(FrameLayout.java:352) 
at android.view.ViewGroup.drawChild(ViewGroup.java:1531) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258) 
at android.view.View.draw(View.java:6538) 
at android.widget.FrameLayout.draw(FrameLayout.java:352) 
at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1830) 
at android.view.ViewRoot.draw(ViewRoot.java:1349) 
at android.view.ViewRoot.performTraversals(ViewRoot.java:1114) 
at android.view.ViewRoot.handleMessage(ViewRoot.java:1633) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:123) 
at android.app.ActivityThread.main(ActivityThread.java:4363) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:521) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
at dalvik.system.NativeStart.main(Native Method) 

Иногда это происходит от разных линий, но она всегда заканчивает врезаться в OverlayBunde.java:42

Как есть не упоминает мой код, я не знаю, что неправильно.

Вы можете получить исходный код MapActivity и в ItemizedOverlay: http://code.google.com/p/metroparis/source/browse/trunk/src/org/bicou/metro/

Класс активности является ACarteStations и класс оверлей StationMetroMapOverlay.

Прошу прощения, что код на французском языке. Я переведу его в конце концов :) Если вам нужны переводы об именах переменных, просто дайте мне знать.

Надеюсь, вы можете мне помочь !!

+0

Я хотел бы также дать список устройств, аварии, я не знаю, если это уместно: - HTC Desire 2,2 FRF91 - HTC HD2 2,2 FRF91 - Sony Ericsson X10i 1,6 - Acer Liquid 2,1 - Samsung GT-I5700 2,1 - Nexus One 2,1 EPE54B - Samsung GT-I9000 2,1 Мое устройство (на котором у меня нет этой проблемы) является Nexus One 2,2 FRF91 (CyanogenMod6RC2) –

ответ

1

Я предполагаю, что в следующей строке (# 106) в ajouterOverlayPosition() является причиной вашей ошибки:

if (l == null) { 
     return null; 
} 

Одна вещь, которая может случиться, что устройство не может найти свое местоположение (на lm.getLastKnownLocation (...), строка # 73). В этом случае вы возвращаете значение null и добавляете этот null к mapOverlays at onCreate(). onDraw() пытается нарисовать все наложения, включая этот нулевой оверлей, и генерируется исключение NullPointerException.

Возможно, вам придется рассматривать проблему с нулевым местоположением по-разному (возможно, отобразить журнал ошибок или повторить попытку или использовать какое-то местоположение по умолчанию ...).

+0

Спасибо так много amitlicht! Вот и все! Умное предположение. Извините, я так долго ответил, что у меня проблемы с Интернетом. Еще раз спасибо. –

Смежные вопросы