Android Google放置自动完成片段导致重复id错误
嗨,我正在我的应用程序中使用谷歌的places autocomplete api。我需要谷歌的地方在另一个片段片段片段,并已得到它的工作。基本上,我有一个带有3个imagview的选项卡,当你点击其中一个时,一个片段将填充主框架布局。最初,如果我点击imagview,它会显示带有autocomplete places片段的片段,它会工作。然而,如果我转到另一个选项卡,然后返回到它,我会在GooglePlacesAutoComplete片段上得到一个重复的id错误 这是包含自动完成片段的片段的xml:Android Google放置自动完成片段导致重复id错误,android,android-fragments,android-nested-fragment,Android,Android Fragments,Android Nested Fragment,嗨,我正在我的应用程序中使用谷歌的places autocomplete api。我需要谷歌的地方在另一个片段片段片段,并已得到它的工作。基本上,我有一个带有3个imagview的选项卡,当你点击其中一个时,一个片段将填充主框架布局。最初,如果我点击imagview,它会显示带有autocomplete places片段的片段,它会工作。然而,如果我转到另一个选项卡,然后返回到它,我会在GooglePlacesAutoComplete片段上得到一个重复的id错误 这是包含自动完成片段的片段的xm
<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
我读了其他类似的问题,但他们的解决方案都不适合我。任何帮助都将不胜感激。尝试添加以下代码:
@Override
public void onDestroy() {
super.onDestroy();
if(mAutocompleteFragment != null && getActivity() != null && !getActivity().isFinishing()) {
getActivity().getFragmentManager().beginTransaction().remove(mAutocompleteFragment).commit();
}
}
我相信你也可以把这个放在onDestroyView()中。在将自动完成片段添加到同一活动之前,需要将其从每个活动中删除。这对我来说是一个问题,我创建并随后销毁了一个添加了AutocompleteFragment的片段,然后尝试再次创建相同的片段,但没有销毁其中运行的活动。尝试添加以下代码:
@Override
public void onDestroy() {
super.onDestroy();
if(mAutocompleteFragment != null && getActivity() != null && !getActivity().isFinishing()) {
getActivity().getFragmentManager().beginTransaction().remove(mAutocompleteFragment).commit();
}
}
我相信你也可以把这个放在onDestroyView()中。在将自动完成片段添加到同一活动之前,需要将其从每个活动中删除。这对我来说是一个问题,我创建并随后销毁了一个添加了AutocompleteFragment的片段,然后尝试再次创建相同的片段,而没有销毁其中运行的活动。您是否尝试过简单地更改片段id?或者您使用的每个id都会出现错误?因为您有一个与
tools:layout=@layout/place\u autocomplete\u fragment
引用的名称相同的布局,所以您正在尝试查找活动的片段。。。不是从现在的碎片我每一次id@Mat工具:
属性在编译时被删除time@cricket_007当im第二次膨胀碎片布局时,出现错误。就好像自动完成的片段永远不会被销毁,即使它所在的片段是。您是否尝试过简单地更改片段id?或者您使用的每个id都会出现错误?因为您有一个与tools:layout=@layout/place\u autocomplete\u fragment
引用的名称相同的布局,所以您正在尝试查找活动的片段。。。不是从现在的碎片我每一次id@Mat工具:
属性在编译时被删除time@cricket_007当im第二次膨胀碎片布局时,出现错误。就好像自动完成片段永远不会被销毁,即使它所在的片段是。谢谢为我工作,但我需要称之为onDestroyView();谢谢manThanks为我工作,但我需要称之为onDestroyView();谢谢你,伙计