MapsForge:无法在performDestroyActivity中停止活动,NullPointerException

时间:2014-06-08 10:52:44

标签: java android mapsforge

我目前正在尝试使用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以来,这似乎已成为一个问题。

0 个答案:

没有答案