使用super.onDestroy时,Android MapActivity崩溃了

时间:2012-10-18 00:45:22

标签: android nullpointerexception android-mapview mapactivity ondestroy

到目前为止,我有一个非常稳定的应用程序,我决定要添加一个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):at   com.google.android.maps.MapActivity.onDestroy(MapActivity.java:500)   10-17 18:32:17.109:E / AndroidRuntime(5477):at   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 more

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

非常感谢您对此进行故障排除的任何建议。

编辑:知道了!我实现了一个onPause(),它与我的onDestroy()具有相同的信息(这是我的解决方案,以防止GPS在应用程序未被使用时处于活动状态)。注释掉onPause()可以让一切都快乐起来。谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

你不需要调用finish();在onDestroy(),finish()内部,文档说:"当你的活动完成并且应该关闭时调用它。",所以如果你在onDestroy()那么你的活动已经完成了

还有super.onDestroy();通常被放在onDestroy()的顶部。