我試圖通過演示序列GroundOverlay
來顯示Google地圖上的漸進式雷達圖像,這些圖像使用預設的雷達圖像陣列。爲了不使用戶界面繁忙,我正在爲此使用不同的線程。不幸的是,這似乎是一個奇怪的NullPointerException
正在發生。我調試了代碼,並沒有找到任何可能導致此錯誤的空變量。Handler上的NullPointerException Runnable函數
我該怎麼辦? (請注意,雷達覆蓋,地圖,圖像,圖像索引和MAP_BOUNDS是全局變量,不爲空 - 請參閱1)。
編輯 - 簡化下面的代碼。仍然給出完全相同的錯誤。
public void createLooper() {
final Runnable runnable = new Runnable() {
public void run() {
if(run == true) {
mHandler.postDelayed(this,500);
} else {
return;
}
if(radaroverlay != null) {
radaroverlay.remove();
}
// Problem happens in the line below.
try {
GroundOverlayOptions opts = new GroundOverlayOptions()
.image(images[image_index])
.positionFromBounds(MAP_BOUNDS)
.transparency((float) 0.3);
radaroverlay = map.addGroundOverlay(opts);
} catch (Exception e) {
e.printStackTrace();
run = false;
}
if(image_index == 19) {
image_index = 0;
} else {
image_index++;
}
}
};
//mHandler.postDelayed(runnable, 500);
new Thread(runnable).start();
和相應logcat
02-27 16:58:04.815: E/AndroidRuntime(6791): FATAL EXCEPTION: main
02-27 16:58:04.815: E/AndroidRuntime(6791): java.lang.NullPointerException
02-27 16:58:04.815: E/AndroidRuntime(6791): at maps.z.aa.<init>(Unknown Source)
02-27 16:58:04.815: E/AndroidRuntime(6791): at maps.z.bi.a(Unknown Source)
02-27 16:58:04.815: E/AndroidRuntime(6791): at maps.z.bi.b(Unknown Source)
02-27 16:58:04.815: E/AndroidRuntime(6791): at maps.z.ag.addGroundOverlay(Unknown Source)
02-27 16:58:04.815: E/AndroidRuntime(6791): at com.google.android.gms.maps.internal.IGoogleMapDelegate$Stub.onTransact(IGoogleMapDelegate.java:182)
02-27 16:58:04.815: E/AndroidRuntime(6791): at android.os.Binder.transact(Binder.java:249)
02-27 16:58:04.815: E/AndroidRuntime(6791): at com.google.android.gms.maps.internal.IGoogleMapDelegate$a$a.addGroundOverlay(Unknown Source)
02-27 16:58:04.815: E/AndroidRuntime(6791): at com.google.android.gms.maps.GoogleMap.addGroundOverlay(Unknown Source)
02-27 16:58:04.815: E/AndroidRuntime(6791): at com.aquamet.saramap.MapActivity$2$1.run(MapActivity.java:520)
02-27 16:58:04.815: E/AndroidRuntime(6791): at android.os.Handler.handleCallback(Handler.java:587)
02-27 16:58:04.815: E/AndroidRuntime(6791): at android.os.Handler.dispatchMessage(Handler.java:92)
02-27 16:58:04.815: E/AndroidRuntime(6791): at android.os.Looper.loop(Looper.java:123)
02-27 16:58:04.815: E/AndroidRuntime(6791): at android.app.ActivityThread.main(ActivityThread.java:4627)
02-27 16:58:04.815: E/AndroidRuntime(6791): at java.lang.reflect.Method.invokeNative(Native Method)
02-27 16:58:04.815: E/AndroidRuntime(6791): at java.lang.reflect.Method.invoke(Method.java:521)
02-27 16:58:04.815: E/AndroidRuntime(6791): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:876)
02-27 16:58:04.815: E/AndroidRuntime(6791): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:634)
02-27 16:58:04.815: E/AndroidRuntime(6791): at dalvik.system.NativeStart.main(Native Method)
調試:
很難說只用這個代碼,但我想,當你設定的地圖地面疊加層,你的圖像索引可以不填充或上升到19是不是20個項目? – 2013-02-27 20:58:06
另外,如果radaroverlay不爲null,您是否想要刪除它?或者你想只是將它設置爲空? – 2013-02-27 21:00:10
這是一個動畫,所以我需要刪除一個覆蓋,然後添加一個新的。那有意義嗎? – jhc 2013-02-27 21:03:05