1

I am facing some problem when I click the back button and go back to the location fragment, I got an error below:

android.view.InflateException: Binary XML file line #14: Error inflating class fragment at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:763) at android.view.LayoutInflater.rInflate(LayoutInflater.java:806) at android.view.LayoutInflater.inflate(LayoutInflater.java:504) at android.view.LayoutInflater.inflate(LayoutInflater.java:414) at com.everstudio.nadejenew.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) at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1528) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1595) at 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.executeOpsTogether(FragmentManager.java:2149) at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2103) at android.support.v4.app.FragmentManagerImpl.popBackStackImmediate(FragmentManager.java:823) at android.support.v4.app.FragmentManagerImpl.popBackStackImmediate(FragmentManager.java:776) at android.support.v4.app.FragmentActivity.onBackPressed(FragmentActivity.java:178) at com.everstudio.nadejenew.MainActivity.onOptionsItemSelected(MainActivity.java:110) at android.app.Activity.onMenuItemSelected(Activity.java:2885) at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:408) at android.support.v7.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:195) at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:113) at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:113) at android.support.v7.widget.ToolbarWidgetWrapper$1.onClick(ToolbarWidgetWrapper.java:187) at android.view.View.performClick(View.java:4780) at android.view.View$PerformClick.run(View.java:19866) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5254) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) Caused by: java.lang.IllegalArgumentException: Binary XML file line #14: Duplicate id 0x7f0f00c6, tag null, or parent id 0xffffffff with another fragment for com.google.android.gms.maps.SupportMapFragment 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$FactoryMerger.onCreateView(LayoutInflater.java:177) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:725) at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)  at android.view.LayoutInflater.inflate(LayoutInflater.java:504)  at android.view.LayoutInflater.inflate(LayoutInflater.java:414)  at com.everstudio.nadejenew.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)  at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1528)  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1595)  at 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.executeOpsTogether(FragmentManager.java:2149)  at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2103)  at android.support.v4.app.FragmentManagerImpl.popBackStackImmediate(FragmentManager.java:823)  at android.support.v4.app.FragmentManagerImpl.popBackStackImmediate(FragmentManager.java:776)  at android.support.v4.app.FragmentActivity.onBackPressed(FragmentActivity.java:178)  at com.everstudio.nadejenew.MainActivity.onOptionsItemSelected(MainActivity.java:110)  at android.app.Activity.onMenuItemSelected(Activity.java:2885)  at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:408)  at android.support.v7.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:195)  at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:113)  at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:113)  at android.support.v7.widget.ToolbarWidgetWrapper$1.onClick(ToolbarWidgetWrapper.java:187)  at android.view.View.performClick(View.java:4780)  at android.view.View$PerformClick.run(View.java:19866)  at android.os.Handler.handleCallback(Handler.java:739)  at android.os.Handler.dispatchMessage(Handler.java:95)  at android.os.Looper.loop(Looper.java:135)  at android.app.ActivityThread.main(ActivityThread.java:5254)  at java.lang.reflect.Method.invoke(Native Method)  at java.lang.reflect.Method.invoke(Method.java:372)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 

I did checked many post and tried all solutions, but its not working. It seems that other menu item is not a problem, Only this location page gives an error.

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;
}
1
  • change the id of fragment. Its duplicating. Commented Apr 18, 2017 at 3:07

2 Answers 2

3

Try to remove your mapFragment on onDestroyView in LocationFragment.java.

@Override
public void onDestroyView() {
    super.onDestroyView();
    SupportMapFragment mapFragment = (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map);
    if (mapFragment != null)
        getChildFragmentManager().beginTransaction().remove(mapFragment).commitAllowingStateLoss();
}
Sign up to request clarification or add additional context in comments.

Comments

0

I think the main reason is this you use name instead of class,

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

Try updating around this code base.

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

You are using childSupportmanager , also this line view = inflater.inflate(R.layout.fragment_location, container, false); you never anchored your map view from it, example view.findViewVyId you never did that

5 Comments

also name should be class,
class="com.google.android.gms.maps.SupportMapFragment"
u replaced name with class and renamed it back to map id
<fragment android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" class="com.google.android.gms.maps.SupportMapFragment"/> still error
what ? i do not comprehend

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.