私のアプリケーションでは、ランチャーに近いものを実現する必要があります。いくつかの UI 要素を動的に追加、削除、サイズ変更、ドラッグ アンド ドロップする機能を提供する必要があります (「ウィジェット」と呼びますが、Android AppWidget ではありません)。それはかなりうまく機能しますが、これらの「ウィジェット」の1つにMapFragmentが含まれており、2回追加することも、削除して再度追加することもできません.
今のところ、各「ウィジェット」は 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
どんなアドバイスでも大歓迎です!