我目前正在尝试使用MapsForge在我的应用程序中的Activity中显示地图。一切正常,我可以使用GraphHopper提供的路线显示地图并添加折线。
正如我的“入门”'在MapsForge部分,我设置了以下代码。 您可以通过其中的按钮关闭活动,也可以通过硬件关闭'返回'按钮。
我按钮的代码:
buttonRetour.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
finish();
}
});
我的方法代码:
@Override
protected void onStop() {
mapView.getLayerManager().getLayers().remove(tileRendererLayer);
tileRendererLayer.onDestroy();
super.onStop();
}
@Override
protected void onDestroy() {
tileCache.destroy();
super.onDestroy();
}
和变量;
public class RunActivity extends Activity {
private MapView mapView;
private TileCache tileCache;
private TileRendererLayer tileRendererLayer;
但是当我用buttonRetour关闭Activity时,我收到以下错误:
06-08 10:30:25.051: E/AndroidRuntime(8895): FATAL EXCEPTION: main
06-08 10:30:25.051: E/AndroidRuntime(8895): java.lang.RuntimeException: Unable to stop activity {icam.Travelr.Core/icam.Travelr.Core.RunActivity}: java.lang.NullPointerException
06-08 10:30:25.051: E/AndroidRuntime(8895): at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3072)
06-08 10:30:25.051: E/AndroidRuntime(8895): at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3126)
06-08 10:30:25.051: E/AndroidRuntime(8895): at android.app.ActivityThread.access$1200(ActivityThread.java:122)
06-08 10:30:25.051: E/AndroidRuntime(8895): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1179)
06-08 10:30:25.051: E/AndroidRuntime(8895): at android.os.Handler.dispatchMessage(Handler.java:99)
06-08 10:30:25.051: E/AndroidRuntime(8895): at android.os.Looper.loop(Looper.java:137)
06-08 10:30:25.051: E/AndroidRuntime(8895): at android.app.ActivityThread.main(ActivityThread.java:4340)
06-08 10:30:25.051: E/AndroidRuntime(8895): at java.lang.reflect.Method.invokeNative(Native Method)
06-08 10:30:25.051: E/AndroidRuntime(8895): at java.lang.reflect.Method.invoke(Method.java:511)
06-08 10:30:25.051: E/AndroidRuntime(8895): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
06-08 10:30:25.051: E/AndroidRuntime(8895): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
06-08 10:30:25.051: E/AndroidRuntime(8895): at dalvik.system.NativeStart.main(Native Method)
06-08 10:30:25.051: E/AndroidRuntime(8895): Caused by: java.lang.NullPointerException
06-08 10:30:25.051: E/AndroidRuntime(8895): at icam.Travelr.Core.RunActivity.onStop(RunActivity.java:372)
06-08 10:30:25.051: E/AndroidRuntime(8895): at android.app.Instrumentation.callActivityOnStop(Instrumentation.java:1174)
06-08 10:30:25.051: E/AndroidRuntime(8895): at android.app.Activity.performStop(Activity.java:4603)
06-08 10:30:25.051: E/AndroidRuntime(8895): at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3067)
06-08 10:30:25.051: E/AndroidRuntime(8895): ... 11 more
我试图把
mapView.getLayerManager().getLayers().remove(tileRendererLayer);
tileRendererLayer.onDestroy();
tileCache.destroy();
在finish()
来电之前它有效,但我显然无法使用它;如果我使用硬件返回按钮关闭我的活动,我迟早会触发OutOfMemory
错误(我已尝试过)。我还尝试将所有调用放在onStop()函数中,并放在super()
之后。没有任何效果。这些调用都不起作用,每个调用在其他调用时都会触发错误。
我在Android 4.0(14)上使用MapsForge 0.4.3
有没有人知道什么可以触发这个,以及我如何解决这个问题?自版本0.3以来,这似乎已成为一个问题。