1

現在、MapsForge を使用して、アプリケーションのアクティビティにマップを表示しようとしています。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 でアクティビティを閉じると、次のエラーが発生します。

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 以降で解決された問題のようです。

4

0 に答える 0