場所を選択するUIで地図を表示する必要があり、DialogFragmentでMapFragmentを設定した際に、1回目の表示の時は問題ないけど、2回目に表示しようするとDuplicate idのエラーが発生した
Duplicate id 0x7f0e00d9, tag null, or parent id 0xffffffff with another fragment for com.google.android.gms.maps.SupportMapFragment
1回目の時にDialogをdismissしてもMapFragmentはクリアされてないらしい
そのため2回目でDuplicateとなってしまっている
結論として、DialogFragmentのdismissをオーバーライドしてmapのFragmentをremoveすることで対応した
<fragment android:id="@+id/map" class="com.google.android.gms.maps.SupportMapFragment" android:layout_width="match_parent" android:layout_height="250dp" />
@Overridepublic void onDismiss(DialogInterface dialog) {
super.onDismiss(dialog);
if (getActivity() != null) {
FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
Fragment fragment = fragmentManager.findFragmentById(R.id.map);
if (fragment != null) {
getActivity().getSupportFragmentManager().beginTransaction().remove(fragment).commit();
}
}
}
同様の問題がDialogFragmentでなくFragmentで起こる場合には、onDestoroyView()の中で同じようにMapFragmentを削除してやれば問題なく動作すると思う
DialogFragmentでSupportMapFragmentを使う時、2回目の起動でDuplicate id でエラーとなる