2012-01-04 57 views
2

我正在開發一個應用程序,該應用程序在三個不同的MapActivities上顯示地圖。如何在多個MapActivities上使用單個MapView

爲了實現這個功能,我在這三個FragmentActivities中重新使用了一個MapFragment,它使用Pete Doyle's port of the Android Compatibility package擴展了MapActivities。

MapFragment中使用的MapView保存在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從答案丹尼·雷明頓 - MacroSolve了。

我還沒有嘗試過使用多個進程,因爲我相信我試圖實現的解決方案在資源上要輕得多。

任何幫助將不勝感激!

回答

1

固定我自己的問題......

當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); 
    } 
} 
相關問題