MapView / MapActivity аварийно завершает работу на BackPressed by Child Activity
Я пытаюсь создать информационную активность, которая, помимо прочего, отображает местоположение в Google MapView. Всякий раз, когда я перемещаюсь по этому MapActivity, а затем нажимаю кнопку "Назад", я получаю следующую ошибку:
"... Причина: java.lang.IllegalStateException: Вы можете иметь только один MapView в MapActivity..."
Вещи, которые вы должны знать!:
onResume вызывает мой setUpDisplay, который инициализирует мой MapView в LinearLayout:
...
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);
...
Я также вызываю myMainLinearLayout.removeAllViews() для моего переопределенного onPause(), а также устанавливаю переменные равными null, просто чтобы убедиться, что все вещи очищаются.
Я также пытался увидеть, если до инициализации mapView, mapView == null - это никогда не будет. У кого-нибудь есть идеи?
Заранее спасибо. -Итан
--------РЕДАКТИРОВАТЬ:
Вот что я делаю в моем методе onPause, в моем MapActivity
@Override
public void onPause()
{//CLEANUP
super.onPause();
myMainLinearLayout.removeAllViews();
myMainLinearLayout= null;
mapView = null;
}
это единственный метод, который я переопределяю, кроме onResume()
1 ответ
Этот пост должен помочь:
Вам разрешено иметь только один MapView в MapActivity.
Резюме: не разрушайте свой предыдущий MapView. Создайте его один раз в onCreate и измените его, когда вам нужно напрямую.