Google 地点自动完成片段导致重复 ID 错误

Google Places Auto Complete fragment causes duplicate id error

您好,我在我的应用程序中使用 google 的位置自动完成 api。我需要 google 将片段放在另一个片段中并使其正常工作。基本上我有一个包含 3 个 imagviews 的选项卡,当您单击其中一个时,一个片段将填充主框架布局。最初,如果我单击显示带有自动完成位置片段的片段的 imagview,它就可以工作。但是,如果我转到另一个选项卡然后返回它,我会在 google 位置自动完成片段上收到重复 ID 错误。

这是包含自动完成片段的片段的 xml:

<LinearLayout
    android:id="@+id/linearLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@android:drawable/dialog_holo_light_frame"
    android:orientation="vertical">

    <fragment
        android:id="@+id/place_autocomplete_fragment"
        android:name="com.google.android.gms.location.places.ui.PlaceAutocompleteFragment"
        android:layout_width="match_parent"
        android:layout_height="42dp"
        android:background="@android:drawable/dialog_frame"
        tools:layout="@layout/place_autocomplete_fragment" /> 

这是包含自动完成片段的片段中的代码:

this.locationSearchBar = (PlaceAutocompleteFragment)getActivity().getFragmentManager().findFragmentById(R.id.place_autocomplete_fragment);

这是我得到的错误:

Duplicate id 0x7f0800dc, tag null, or parent id 0x7f0800f6 with another fragment for com.google.android.gms.location.places.ui.PlaceAutocompleteFragment

我阅读了其他类似的问题,但 none 他们的解决方案对我有用。任何帮助将不胜感激。

尝试添加此代码:

@Override
public void onDestroy() {
    super.onDestroy();
    if(mAutocompleteFragment != null && getActivity() != null && !getActivity().isFinishing()) {
        getActivity().getFragmentManager().beginTransaction().remove(mAutocompleteFragment).commit();
    }
}

我相信你也可以把它放在 onDestroyView() 中。在将 AutocompleteFragment 添加到相同的 Activity 之前,需要将其从每个 ACTIVITY 中删除。这对我来说是个问题,当我创建并随后销毁了一个添加了 AutocompleteFragment 的 Fragment,然后尝试再次创建相同的 Fragment 而没有销毁它在其中运行的 Activity。