我正在尝试创建一个信息性活动,它在谷歌的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()
之外,这是我唯一重写的方法答案 0 :(得分:0)
这篇文章应该有所帮助:
You are only allowed to have a single MapView in a MapActivity
摘要:不要破坏以前的MapView。在onCreate中实例化一次,并在需要时直接修改它。