我正在尝试创建一个信息活动,它在谷歌的 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 ——它永远不会。有人有想法么?
提前致谢。-伊森
- - - - 编辑:
这是我在我的 onPause 方法中所做的,在我的 MapActivity 中
@Override
public void onPause()
{//CLEANUP
super.onPause();
myMainLinearLayout.removeAllViews();
myMainLinearLayout= null;
mapView = null;
}
这是除了 onResume() 之外我要覆盖的唯一方法