2012-01-04 7 views
2

Я разрабатываю приложение, которое отображает карту на трех разных MapActivities.Как использовать один MapView через несколько MapActivities

Для этого я повторно использую MapFragment по этим трем функциям FragmentActivities, которые расширяют MapActivities, используя Pete Doyle's port of the Android Compatibility package.

MapView, используемый в этом MapFragment, хранится на Application Context.

Для того, чтобы избежать «этого вида уже родителем» ошибки, я удалить вид из текущего родителя, когда не открывая другую деятельность:

ViewGroup parentViewGroup = (ViewGroup) app.mapViewContainer.getParent(); 
if(null != parentViewGroup) { 
    parentViewGroup.removeView(app.mapViewContainer); 
} 

Это все работает хорошо до того момента, когда я нажимаю кнопку «Назад» телефона и перехожу к предыдущей MapActivity. На данный момент MapView все черное, поскольку я удалял его из родителя при изменении действий, а кнопка «Назад» не запускает воссоздание представления ...

Мне известно об этом сообщении : How to use multiple MapActivities/MapViews per Android application/process

в самом деле, у меня появилась идея, чтобы повторно использовать MapView по деятельности от ответа Дэнни Remington - MacroSolve дал.

Я не пытался использовать несколько процессов, так как считаю, что решение, которое я пытаюсь реализовать, намного легче ресурсов.

Любая помощь была бы высоко оценена!

ответ

1

Fixed мою собственную проблему ...

Когда MapFragment возобновляется, я просто должен был удалить все виды из фрагмента и от родительского MAPview, а затем добавить MapView к фрагменту:

@Override 
public void onResume() { 
    super.onResume(); 

    resumed++; 

    if (resumed > 0) { 
     ViewGroup view = (ViewGroup) this.getView(); 
     view.removeAllViews(); 

     ViewGroup parentViewGroup = (ViewGroup) app.mapViewContainer.getParent(); 
     if (parentViewGroup != null) { 
      parentViewGroup.removeAllViews(); 
     } 

     view.addView(app.mapViewContainer); 
    } 
} 
Смежные вопросы