1

これまでのところ非常に安定しているアプリがあり、それに MapView を追加することにしました。それが違いを生む場合、MapViewはHorizo​​ntalScrollViewにあります。メイン アクティビティを変換して MapActivity を拡張し、isRouteDisplayed() 関数を追加しました。コンパイルして実行し、スクロールして MapView が正しくロードされていることを確認できます。

私の問題は、 super.onDestroy() が呼び出されるときです。何らかの理由で、プログラムがクラッシュします。

LogCat:

10-17 18:32:17.109: E/AndroidRuntime(5477): 原因: java.lang.NullPointerException 10-17 18:32:17.109: E/AndroidRuntime(5477): com.google.android.maps.MapActivity で.onDestroy (MapActivity.java:500) 10-17 18:32:17.109: E/AndroidRuntime (5477): com.appsmith.mapit.MainActivity.onDestroy (MainActivity.java:177) で 10-17 18:32:17.109 : E/AndroidRuntime(5477): at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:2663) 10-17 18:32:17.109: E/AndroidRuntime(5477): ... 11 もっと見る

 @Override
 public void onDestroy()
 {
        internalSave();
        writeOutLookupTable("Unit");
        gpsManager.removeUpdates(myListener);
        super.onDestroy(); //MainActivity.java Line 177
        finish();
 }

これをトラブルシューティングするためのアドバイスをいただければ幸いです。

編集:わかりました!onDestroy() と同じ情報を持つ onPause() を実装しました (アプリが使用されていないときに GPS がアクティブにならないようにするための解決策でした)。onPause() をコメントアウトすると、すべてが再び幸せになります。助けてくれてありがとう!

4

1 に答える 1

1

finish(); を呼び出す必要はありません。ドキュメントが言うように onDestroy() 内、finish():「アクティビティが完了したらこれを呼び出して、閉じる必要があります。」したがって、onDestroy() にいる場合、アクティビティはすでに終了しています。

また、super.onDestroy(); 通常、onDestroy() の先頭に配置されます。

于 2012-10-18T00:52:50.957 に答える