2012-10-24 42 views
0

我已經創建了一個地圖片段,如此處所示MapView in a Fragment (Honeycomb),它很棒。具有兼容性包的多個MapFragments

問題是當我在下面的活動中有另一個地圖片段。

活動A有一個MapFragment佔據了整個頁面。活動B有一個只佔用頁面一半的MapFragment(下半部分有一個ListFragment)。這兩個工作都很好,但是當我點擊後退按鈕從活動B返回到A時,地圖視圖只佔用一半的頁面,而頁面的下半部分有刷新問題。

mapviews狀態不會獨立於另一個而保存。例如:從活動A到活動B時,地圖顯示相同。這可以。但是,如果用戶在活動B中平移或放大地圖。當用戶返回到活動A時,地圖不會回到活動暫停時的位置(這顯然不是主要問題,因爲我可以手動保存狀態並重新定位,如果爲我處理的話,這將會很方便)。

這是一個活動的樣子從活動B Incorrect Refreshed Mapview

回答

1

你問過讓你知道是否有更好的解決方案 - 現在有。谷歌發佈Android Maps API v2,它給你MapFragment。現在它應該像魅力一樣工作。

+0

這應該讓生活變得輕鬆很多,謝謝。 – Stimsoni

0

回國後回來我發現了一個解決方案,但請讓我知道如果你能找到一個更好的。

問題是,當活性的恢復它的碎片不意味着他們從來沒有重繪和維護,它在活動B.

要解決的問題大小,我不得不以下方法添加到MapFragment並從onResume()的活動中調用它。這確保了地圖被調整大小以佔據它原來的空間。 是的,這是一個巨大的破解,所以如果你找到一種方法來確保碎片創建,銷燬和恢復正確,可靠,請在這裏發佈答案。

/** 
* This method should be called in the activity containing the fragments onResume method 
* to ensure the mapview in this fragment has the expected size. 
* 
* @param width 
* @param height 
*/ 
public void setMapViewSize(int width, int height){ 
    LayoutParams lp = new LayoutParams(width, height); 
    myMapView.setLayoutParams(lp); 
} 

只是爲了澄清,當我說MapFragment我談論延伸MapActivity,不加載包含地圖(擴展ActivityHostFragment)活性的類的類。