對於我的應用程序,我必須從啓動程序附近獲得一些東西:我必須提供添加,刪除,調整大小和動態拖動某些UI元素(我們稱之爲「小部件」,但它們不是Android AppWidgets)。它工作得很好,但其中一個「小部件」包含一個MapFragment,我無法將它添加兩次,既不能刪除它又不能添加它。Android - 動態添加幾個MapFragments
目前,每個「小部件」都是從FrameLayout繼承的。 MapFragment是從xml加載的。問題是我們無法通過代碼設置Fragment id,如果我在xml中執行此操作,那麼我的所有地圖都顯示相同的ID。所以,我得到這個異常:
03-20 09:55:35.078: E/AndroidRuntime(19507):
Caused by: java.lang.IllegalArgumentException:
Binary XML file line #24: Duplicate id 0xffffffff, tag map,
or parent id 0xffffffff with another fragment for
com.google.android.gms.maps.MapFragment
下面是片段代碼:
...
<fragment
android:tag="map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.MapFragment" />
...
View.inflate(getContext(), layout, R.layout.widget_map);
所以我在這裏,完全被卡住^^。我已經通過stackoverflow和互聯網搜索,但沒有找到解決方案。此外,我使用的是Android Maps API V2,每次更改屏幕方向(因此當重新繪製地圖時),我都會在控制檯中進行一些GC打印,我必須擔心它們嗎?
03-20 10:02:41.820: D/dalvikvm(19650): GC_CONCURRENT freed 1929K, 17% free 11579K/13940K, paused 3ms+4ms, total 44ms
03-20 10:02:42.250: D/dalvikvm(19650): GC_CONCURRENT freed 382K, 14% free 12123K/13940K, paused 3ms+13ms, total 67ms
03-20 10:02:42.250: D/dalvikvm(19650): WAIT_FOR_CONCURRENT_GC blocked 51ms
03-20 10:02:42.328: D/dalvikvm(19650): GC_CONCURRENT freed 2114K, 21% free 11099K/13940K, paused 2ms+2ms, total 45ms
03-20 10:02:42.328: D/dalvikvm(19650): WAIT_FOR_CONCURRENT_GC blocked 32ms
任何意見將受到歡迎!
謝謝你的回答。我嘗試過使用MapViews,它工作正常,但使用MapViews我必須將所有活動生命週期函數轉發給我的「小部件」,這非常煩人:/。 對於片段,我不能給differents ID:我使用相同的XML文件來加載幾個片段。所以在XML中,我無法設置ID,因爲如果我這樣做,它對我所有的片段都是一樣的,而且我不能通過代碼來完成,因爲...我們不能通過代碼設置片段的ID><! ... – 2013-03-20 15:15:43
... 確定爲GC調用...我紅了一些關於API V2和內存泄漏的文章,好像谷歌已經發布它很快(此外,還有,恕我直言,巨大缺乏功能/靈活性: /)。 如果選擇繼續使用MapViews,我會接受你的答案,謝謝! – 2013-03-20 15:16:01