2017-04-18 2 views
1

Je suis confronté à un problème lorsque je clique sur le bouton de retour et revenir au fragment de l'emplacement, je suis une erreur ci-dessous:android.view.InflateException: ligne fichier XML binaire # 14: fragment d'erreur de classe gonfler

android.view.InflateException: ligne de fichier binaire XML # 14: Erreur de gonflement du fragment de classe at android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:763) at android.view.LayoutInflater.rInflate (LayoutInflater.java:806) à android.view.LayoutInflater.inflate (LayoutInflater.java:504) à android.view.LayoutInflater.inflate (LayoutInflater.java:414) à com.everstudio.nadejenew.LocationFragment.onCreateView (LocationFragment.java:73) à android.support.v4.app.Fragment.performCreateView (Fragment.java:2192) à android.support .v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1299) à android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState (FragmentManager.java:1528) à android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager .java: 1595) à android.support.v4.app.BackStackRecord.executePopOps (BackStackRecord.java:807) à android.support.v4.app.FragmentManagerImpl.executeOps (FragmentManager.java:2360) at android.support.v4.app.FragmentManagerImpl.executeOpsTogether (FragmentManager.java:2149) à android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps (FragmentManager.java:2103) à android.support.v4.app. FragmentManagerImpl.popBackStackImmediate (FragmentManager.java:823) à android.support.v4.app.FragmentManagerImpl.popBackStackImmediate (FragmentManager.java:776) à android.support.v4.app.FragmentActivity.onBackPressed (FragmentActivity.java:178) à com.everstudio.nadejenew.MainActivity.onOptionsItemSelected (MainActivity.java:110) à android.app.Activity.onMenuItemSelected (Activity.java:2885) à etr oid.support.v4.app.FragmentActivity.onMenuItemSelected (FragmentActivity.java:408) at android.support.v7.app.AppCompatActivity.onMenuItemSelected (AppCompatActivity.java:195) à android.support.v7.view.WindowCallbackWrapper. onMenuItemSelected (WindowCallbackWrapper.java:113) à android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected (WindowCallbackWrapper.java:113) à android.support.v7.widget.ToolbarWidgetWrapper 1.onClick $ (ToolbarWidgetWrapper.java:187) à android.view.View.performClick (View.java:4780) à android.view.View $ PerformClick.run (View.java:19866) à android.os.Handler.handleCallback (Handler.java:739) à android.os.Handler.dispatchMessage (Handler.java:95) à android.os.Looper.loop (Looper.java:135) à android.app.ActivityThread.main (ActivityThread.java:5254) à java.lang.reflect.Method.invoke (native Method) à java.lang.reflect.Method.invoke (Method.java:372) à com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java : 903) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:698) Causé par: java.lang.IllegalArgumentException: ligne de fichier XML binaire # 14: ID dupliqué 0x7f0f00c6, balise null ou ID parent 0xffffffff avec un autre fragment pour com.google.android.gms.maps.SupportMapFragment à android.support.v4.app.FragmentManagerImpl.onCreateView (FragmentManager.java:3447) à android.support.v4.view.LayoutInflaterCompatHC $ FactoryWrapperHC.onCreateView (LayoutInflaterCompatHC.java:47) à android.view.LayoutInflater FactoryMerger.onCreateView $ (LayoutInflater.java:177) à android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:725) à android.view.LayoutInflater.rInflate (LayoutInflater.java:806) à android.view.LayoutInflater .inflate (LayoutInflater.java:504) à android.view.LayoutInflater.inflate (LayoutInflater.java:414) à com.everstudio.n adejenew.LocationFragment.onCreateView (LocationFragment.java:73) at android.support.v4.app.Fragment.performCreateView (Fragment.java:2192) at android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java: 1299) à android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState (FragmentManager.java:1528) à android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1595) à android.support.v4. app.BackStackRecord.executePopOps (BackStackRecord.java:807) at android.support.v4.app.FragmentManagerImpl.executeOps (FragmentManager.java:2360) at android.support.v4.app.FragmentManagerImpl.executeO psTogether (FragmentManager.java:2149) à android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps (FragmentManager.java:2103) à android.support.v4.app.FragmentManagerImpl.popBackStackImmediate (FragmentManager.java:823) à android.support.v4.app.FragmentManagerImpl.popBackStackImmediate (FragmentManager.java:776) at android.support.v4.app.FragmentActivity.onBackPressed (FragmentActivity.java:178) à com.everstudio.nadejenew.MainActivity.onOptionsItemSelected (MainActivity.java:110) at android.app.Activity.onMenuItemSelected (Activity.java:2885) at android.support.v4.app.FragmentActivity.onMenuItemSelected (FragmentActiv ity.java:408) à android.support.v7.app.AppCompatActivity.onMenuItemSelected (AppCompatActivity.java:195) à android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected (WindowCallbackWrapper.java:113) à androïde. support.v7.view.WindowCallbackWrapper.onMenuItemSelected (WindowCallbackWrapper.java:113) à l'adresse android.support.v7.widget.ToolbarWidgetWrapper $ 1.onClick (ToolbarWidgetWrapper.java:187) at android.view.View.performClick (View.java : 4780) à android.view.View $ PerformClick.run (View.java:19866) à android.os.Handler.handleCallback (Handler.java:739) at android.os.Handle r.dispatchMessage (Handler.java:95) à android.os.Looper.loop (Looper.java:135) à android.app.ActivityThread.main (ActivityThread.java:5254) à java.lang.reflect. Method.invoke (méthode native) à java.lang.reflect.Method.invoke (Method.java:372) à com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:903) at com .android.internal.os.ZygoteInit.main (ZygoteInit.java:698)

Je ne ai vérifié beaucoup après et a essayé toutes les solutions, mais ce ne fonctionne pas.Il semble que l'autre élément de menu n'est pas un problème, seule cette page d'emplacement donne une erreur.

fragment_location.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<Spinner 
    android:id="@+id/spinner1" 
    android:layout_width="match_parent" 
    android:layout_height="40dp" 
    android:background="@color/white" 
    android:spinnerMode="dropdown"/> 

<fragment 
    android:id="@+id/map" 
    android:name="com.google.android.gms.maps.SupportMapFragment" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_marginTop="40dp"/> 

</RelativeLayout> 

LocationFragment.java

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

     view = inflater.inflate(R.layout.fragment_location, container, false);// this is the line 73 
     SupportMapFragment mapFragment = (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map); 
     mapFragment.getMapAsync(this); 

    return view; 
} 
+0

changez l'ID du fragment. Sa duplication. –

Répondre

3

Essayez de supprimer votre mapFragment sur onDestroyView dans LocationFragment.java.

@Override 
public void onDestroyView() { 
    super.onDestroyView(); 
    SupportMapFragment mapFragment = (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map); 
    if (mapFragment != null) 
     getChildFragmentManager().beginTransaction().remove(mapFragment).commitAllowingStateLoss(); 
} 
+0

c'est le travail pour moi! Merci!!!! – JsLaw

0

Je pense que la raison principale est ce que vous utilisez le nom au lieu de classe,

<fragment 
     android:id="@+id/map" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     class="com.google.android.gms.maps.SupportMapFragment" /> 

mise à jour Essayez autour de ce code base.

FragmentManager fmanager = getSupportFragmentManager(); 
    Fragment fragment = fmanager.findFragmentById(R.id.map); 
     SupportMapFragment supportmapfragment = (SupportMapFragment)fragment; 
     GoogleMap supportMap = supportmapfragment.getMap() 

Vous utilisez childSupportmanager, également cette ligne view = inflater.inflate(R.layout.fragment_location, container, false); vous n'ANCRÉE vue sur la carte de celui-ci, par exemple view.findViewVyId vous ne l'avez fait

+0

également le nom doit être classe, – Remario

+0

class = "com.google.android.gms.maps.SupportMapFragment" – Remario

+0

le changer en arrière, vérifier la réponse mise à jour – Remario