MapView / MapActivity崩溃onBackPressed由Child Activity

时间:2012-07-07 16:54:37

标签: android android-mapview mapactivity

我正在尝试创建一个信息性活动,它在谷歌的MapView上显示一个位置等等。每当我浏览此MapActivity,然后单击后退按钮,我会收到以下错误:

“...引起:java.lang.IllegalStateException:你只能在MapActivity中拥有一个MapView ......”

你应该知道的事情! :

onResume调用我的setUpDisplay,它在LinearLayout中初始化我的MapView:

...

        List<Address> geoResults = geocoder.getFromLocationName(formalAddress, 1);
    while (geoResults.size()==0) 
    {
        geoResults = geocoder.getFromLocationName("empire state building", 1);
    }
    if (geoResults.size()>0) 
    {
        point= new GeoPoint( (int) (geoResults.get(0).getLatitude() * 1E6), (int) (geoResults.get(0).getLongitude() * 1E6));
    }
    mapView = new MapView(this, "YOU-NO-GET-TO-SEE-MY-KEY-HERE!");


    MapController mapController = mapView.getController();

    mapController.animateTo(point);
    mapController.setZoom(15);


               myMainLinearLayout.addView(mapView);

...

我还确保在覆盖的onPause()上调用myMainLinearLayout.removeAllViews(),并将变量设置为null,以确保所有内容都得到清理。

我还试图在mapView初始化之前看看mapView == null - It Never Is。 有人有什么想法吗?

提前致谢。 -Ethan

--------编辑:

以下是我在onPause方法中的做法,在我的MapActivity

@Override
public void onPause()
{//CLEANUP
    super.onPause();
    myMainLinearLayout.removeAllViews();
    myMainLinearLayout= null;
    mapView = null;
}

除了onResume()

之外,这是我唯一重写的方法

1 个答案:

答案 0 :(得分:0)

这篇文章应该有所帮助:

You are only allowed to have a single MapView in a MapActivity

摘要:不要破坏以前的MapView。在onCreate中实例化一次,并在需要时直接修改它。