0

Also, ich zeige eine Karte in einem Fragment (Registerkarte) (mit MapView) und es funktioniert völlig in Ordnung, aber die ich fügte hinzu, die SupportMapFragment in dem xML-Tab und es stürzt ab, nachdem ich versuche, die Registerkarte erneut auswählen Hier wird das vollständige Protokoll des Absturzes ist.SupportPlaceAutocompleteFragment löst "Duplicate ID, Tag Null oder Eltern ID mit einem anderen Fragment für com..places.ui.SupportPlaceAutocompleteFragment

04-11 23:27:04.972 15121-15121/com.cynicalpolitcal.muana E/AndroidRuntime: FATAL EXCEPTION: main 
                     Process: com.cynicalpolitcal.muana, PID: 15121 
                     android.view.InflateException: Binary XML file line #46: Binary XML file line #46: Error inflating class fragment 
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:551) 
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:429) 
                      at com.cynicalpolitcal.muana.TabExplore.onCreateView(TabExplore.java:68) 
                      at android.support.v4.app.Fragment.performCreateView(Fragment.java:2192) 
                      at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1299) 
                      at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1528) 
                      at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:753) 
                      at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2363) 
                      at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2149) 
                      at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2103) 
                      at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:1984) 
                      at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:626) 
                      at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:143) 
                      at android.support.v4.view.ViewPager.populate(ViewPager.java:1268) 
                      at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:668) 
                      at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:630) 
                      at android.support.v4.view.ViewPager.setCurrentItem(ViewPager.java:611) 
                      at android.support.design.widget.TabLayout$ViewPagerOnTabSelectedListener.onTabSelected(TabLayout.java:2191) 
                      at android.support.design.widget.TabLayout.dispatchTabSelected(TabLayout.java:1164) 
                      at android.support.design.widget.TabLayout.selectTab(TabLayout.java:1157) 
                      at android.support.design.widget.TabLayout.selectTab(TabLayout.java:1127) 
                      at android.support.design.widget.TabLayout$Tab.select(TabLayout.java:1426) 
                      at android.support.design.widget.TabLayout$TabView.performClick(TabLayout.java:1536) 
                      at android.view.View$PerformClick.run(View.java:22596) 
                      at android.os.Handler.handleCallback(Handler.java:739) 
                      at android.os.Handler.dispatchMessage(Handler.java:95) 
                      at android.os.Looper.loop(Looper.java:148) 
                      at android.app.ActivityThread.main(ActivityThread.java:7325) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 
                     Caused by: android.view.InflateException: Binary XML file line #46: Error inflating class fragment 
                      at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:794) 
                      at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:716) 
                      at android.view.LayoutInflater.rInflate(LayoutInflater.java:847) 
                      at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:810) 
                      at android.view.LayoutInflater.rInflate(LayoutInflater.java:855) 
                      at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:810) 
                      at android.view.LayoutInflater.rInflate(LayoutInflater.java:855) 
                      at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:810) 
                      at android.view.LayoutInflater.rInflate(LayoutInflater.java:855) 
                      at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:810) 
                      at android.view.LayoutInflater.rInflate(LayoutInflater.java:855) 
                      at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:810) 
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:527) 
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:429)  
                      at com.cynicalpolitcal.muana.TabExplore.onCreateView(TabExplore.java:68)  
                      at android.support.v4.app.Fragment.performCreateView(Fragment.java:2192)  
                      at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1299)  
                      at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1528)  
                      at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:753)  
                      at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2363)  
                      at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2149)  
                      at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2103)  
                      at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:1984)  
                      at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:626)  
                      at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:143)  
                      at android.support.v4.view.ViewPager.populate(ViewPager.java:1268)  
                      at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:668)  
                      at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:630)  
                      at android.support.v4.view.ViewPager.setCurrentItem(ViewPager.java:611)  
                      at android.support.design.widget.TabLayout$ViewPagerOnTabSelectedListener.onTabSelected(TabLayout.java:2191)  
                      at android.support.design.widget.TabLayout.dispatchTabSelected(TabLayout.java:1164)  
                      at android.support.design.widget.TabLayout.selectTab(TabLayout.java:1157)  
                      at android.support.design.widget.TabLayout.selectTab(TabLayout.java:1127)  
                      at android.support.design.widget.TabLayout$Tab.select(TabLayout.java:1426)  
                      at android.support.design.widget.TabLayout$TabView.performClick(TabLayout.java:1536)  
                      at android.view.View$PerformClick.run(View.java:22596)  
                      at android.os.Handler.handleCallback(Handler.java:739)  
                      at android.os.Handler.dispatchMessage(Handler.java:95)  
                      at android.os.Looper.loop(Looper.java:148)  
                      at android.app.ActivityThread.main(ActivityThread.java:7325)  
                      at java.lang.reflect.Method.invoke(Native Method)  
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)  
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)  
                     Caused by: java.lang.IllegalArgumentException: Binary XML file line #46: Duplicate id 0x7f0f00f5, tag null, or parent id 0x7f0f00f4 with another fragment for com.google.android.gms.location.places.ui.SupportPlaceAutocompleteFragment 
                      at android.support.v4.app.FragmentManagerImpl.onCreateView(FragmentManager.java:3447) 
                      at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:47) 
                     at android.view.LayoutInflater 

ich die App zum ersten Mal öffnen, und es funktioniert gut, bis ich versuche, auf die Registerkarte neu laden. Here is the first tab opened - it is ok und It crashes after this.

T Das Fragment befindet sich in einem Koordinator-Layout und es funktioniert gut, wenn es das erste Mal in Ordnung ist, wenn es das erste Mal geöffnet wird.

<android.support.design.widget.CoordinatorLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:fitsSystemWindows="true" 
> 
<android.support.design.widget.AppBarLayout 
    android:id="@+id/appbarlayout_explore" 
    android:layout_width="match_parent" 

    app:layout_scrollFlags="scroll|enterAlways" 

    android:layout_height="wrap_content"> 
    <android.support.design.widget.CollapsingToolbarLayout 
     android:id="@+id/collapsing_bar_in_layout" 
     android:layout_width="wrap_content" 
     app:titleEnabled="false" 
     app:statusBarScrim="@null" 
     app:layout_scrollFlags="scroll|enterAlways" 

     android:fitsSystemWindows="true" 
     android:layout_height="400dp"> 
     <RelativeLayout 
      android:layout_width="match_parent" 
      android:enabled="true" 
      android:focusable="true" 
      android:clickable="true" 
      app:layout_collapseMode="parallax" 
      android:layout_height="400dp"> 
     <com.google.android.gms.maps.MapView 
      android:id="@+id/mapView" 
      android:layout_width="match_parent" 
      android:layout_height="420dp" /> 
     <LinearLayout 
      android:layout_margin="16dp" 
      android:layout_width="match_parent" 
      android:layout_height="48dp" 
      android:orientation="horizontal" 
      android:id="@+id/titleView" 
      android:elevation="0dp" 
      android:layout_alignTop="@id/mapView" 
      android:background="@color/tw__solid_white"> 

      <fragment 
       android:id="@+id/place_autocomplete_fragment" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:name="com.google.android.gms.location.places.ui.SupportPlaceAutocompleteFragment" 
       android:layout_below="@id/titleView"/> 
    </LinearLayout> 

     </RelativeLayout> 
    </android.support.design.widget.CollapsingToolbarLayout> 

</android.support.design.widget.AppBarLayout> 


<android.support.v7.widget.RecyclerView 
    android:layout_gravity="bottom" 
    android:layout_below="@id/titleView" 
    android:id="@+id/listofusers" 
    android:elevation="11dp" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:visibility="visible" 
    android:clipToPadding="false" 
    android:fitsSystemWindows="true" 
    app:layout_collapseMode="parallax" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" 
    /> 

Und hier ist der gesamte Code in der tab.java, die mit dem Fragment zu tun hat:

SupportPlaceAutocompleteFragment autocompleteFragment = (SupportPlaceAutocompleteFragment) 
      getChildFragmentManager().findFragmentById(R.id.place_autocomplete_fragment); 

    autocompleteFragment.setOnPlaceSelectedListener(new PlaceSelectionListener() { 
     @Override 
     public void onPlaceSelected(Place place) { 
      // TODO: Get info about the selected place. 
      googleMap.clear(); 
      CameraPosition cameraPosition = new CameraPosition.Builder().target(place.getLatLng()).zoom(11).build(); 
      googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)); 
      googleMap.addMarker(new MarkerOptions().position(place.getLatLng()).title(place.getName().toString())); 

      Toast.makeText(getContext(), place.getClass().getName().toString(), Toast.LENGTH_SHORT).show(); 
     } 

     @Override 
     public void onError(Status status) { 
      // TODO: Handle the error. 
      Log.i("LOGINCAZDEEROARE:", "Error happened: " + status); 
      Toast.makeText(getContext(), "IT DID NOT WORK", Toast.LENGTH_SHORT).show(); 
     } 
    }); 
+0

dies der XML-Fragment ist, ist. Das XML für die Aktivität ist der Standard, wenn Sie eine Aktivität mit Registerkarten erstellen. –

Antwort

1

ich das Problem gelöst und ich hoffe, dass dies jemand hilft! Jemand hatte ein ähnliches Problem mit mir, aber mit einem Kartenfragment. This answer arbeitete für mich.

Die Antwort ist wie unten

Wenn n die Anzahl der Tabs ist dann:

mViewPager.setOffscreenPageLimit (n);

Ansicht Pager implementiert eine Warteschlange so müssen Sie nicht, dass es das Fragment zu entfernen. onCreateView wird nur einmal aufgerufen.

Hinweis: Sie können ein Layout nicht in ein Fragment aufblasen, wenn dieses Layout a enthält. Nested-Fragmente werden nur unterstützt, wenn an ein Fragment dynamisch hinzugefügt

Duplicate ID, tag null, or parent id with another fragment for com.google.android.gms.maps.MapFragment