Question

My maps was working until I added a RetainedFragment from this tutorial "Handling The Change".

The error occurs when inflating the layout that contains a fragment with the class com.google.android.gms.maps.SupportMapFragment:

PlaceholderFragment in SplashScreenActivity.java

View rootView = inflater.inflate(R.layout.fragment_splash_screen, container, false);

res/layout/fragment_splash_screen.xml

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

Error:

android.view.InflateException: Binary XML file line #18: Error inflating class fragment

Complete stack:

03-25 10:16:51.681: I/Process(31941): Sending signal. PID: 31941 SIG: 9
03-25 10:17:00.141: E/Trace(32468): error opening trace file: No such file or directory (2)
03-25 10:17:00.381: D/AndroidRuntime(32468): Shutting down VM
03-25 10:17:00.381: W/dalvikvm(32468): threadid=1: thread exiting with uncaught exception (group=0x4184c7d0)
03-25 10:17:00.401: E/AndroidRuntime(32468): FATAL EXCEPTION: main
03-25 10:17:00.401: E/AndroidRuntime(32468): java.lang.RuntimeException: Unable to start activity ComponentInfo{br.com.ericksprengel.piz/br.com.ericksprengel.supportmapfragmentvsretainedfragment.SplashScreenActivity}: android.view.InflateException: Binary XML file line #18: Error inflating class fragment
03-25 10:17:00.401: E/AndroidRuntime(32468):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2115)
03-25 10:17:00.401: E/AndroidRuntime(32468):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2153)
03-25 10:17:00.401: E/AndroidRuntime(32468):    at android.app.ActivityThread.access$700(ActivityThread.java:137)
03-25 10:17:00.401: E/AndroidRuntime(32468):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1246)
03-25 10:17:00.401: E/AndroidRuntime(32468):    at android.os.Handler.dispatchMessage(Handler.java:99)
03-25 10:17:00.401: E/AndroidRuntime(32468):    at android.os.Looper.loop(Looper.java:137)
03-25 10:17:00.401: E/AndroidRuntime(32468):    at android.app.ActivityThread.main(ActivityThread.java:5031)
03-25 10:17:00.401: E/AndroidRuntime(32468):    at java.lang.reflect.Method.invokeNative(Native Method)
03-25 10:17:00.401: E/AndroidRuntime(32468):    at java.lang.reflect.Method.invoke(Method.java:511)
03-25 10:17:00.401: E/AndroidRuntime(32468):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792)
03-25 10:17:00.401: E/AndroidRuntime(32468):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555)
03-25 10:17:00.401: E/AndroidRuntime(32468):    at dalvik.system.NativeStart.main(Native Method)
03-25 10:17:00.401: E/AndroidRuntime(32468): Caused by: android.view.InflateException: Binary XML file line #18: Error inflating class fragment
03-25 10:17:00.401: E/AndroidRuntime(32468):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
03-25 10:17:00.401: E/AndroidRuntime(32468):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
03-25 10:17:00.401: E/AndroidRuntime(32468):    at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
03-25 10:17:00.401: E/AndroidRuntime(32468):    at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
03-25 10:17:00.401: E/AndroidRuntime(32468):    at br.com.ericksprengel.supportmapfragmentvsretainedfragment.SplashScreenActivity$PlaceholderFragment.onCreateView(SplashScreenActivity.java:72)
03-25 10:17:00.401: E/AndroidRuntime(32468):    at android.support.v4.app.Fragment.performCreateView(Fragment.java:1500)
03-25 10:17:00.401: E/AndroidRuntime(32468):    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:927)
03-25 10:17:00.401: E/AndroidRuntime(32468):    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
03-25 10:17:00.401: E/AndroidRuntime(32468):    at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
03-25 10:17:00.401: E/AndroidRuntime(32468):    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467)
03-25 10:17:00.401: E/AndroidRuntime(32468):    at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:570)
03-25 10:17:00.401: E/AndroidRuntime(32468):    at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1163)
03-25 10:17:00.401: E/AndroidRuntime(32468):    at android.app.Activity.performStart(Activity.java:5068)
03-25 10:17:00.401: E/AndroidRuntime(32468):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2088)
03-25 10:17:00.401: E/AndroidRuntime(32468):    ... 11 more
03-25 10:17:00.401: E/AndroidRuntime(32468): Caused by: java.lang.IllegalStateException: Fragment com.google.android.gms.maps.SupportMapFragment did not create a view.
03-25 10:17:00.401: E/AndroidRuntime(32468):    at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:314)
03-25 10:17:00.401: E/AndroidRuntime(32468):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:676)
03-25 10:17:00.401: E/AndroidRuntime(32468):    ... 24 more

I have no ideia what's the relation between RetainedFragment vs SupportMapFragment, but this error occurs only when I use RetainedFragment.

// find the retained fragment on activity restarts
FragmentManager fm = getSupportFragmentManager();
dataFragment = (RetainedFragment) fm.findFragmentByTag("data");

// create the fragment and data the first time
if (dataFragment == null) {
    // add the fragment
    dataFragment = new RetainedFragment();
    fm.beginTransaction().add(dataFragment, "data").commit();
}

The app does't crash if I remove this line

fm.beginTransaction().add(dataFragment, "data").commit();

I have created a simple project that contains a simple Activity with a simple layout with the SupportMapFragment and a RetainedFragment.

Simple Project: https://github.com/ericksprengel/support-map-fragment-vs-retained-fragment

Was it helpful?

Solution

I'm not sure how this relates to your RetainedFragment, that is odd.

But it looks like your problem is related to Having an issue with GoogleMap v2 crashing app on orientation change.

You are creating a placeholder fragment, then loading a child fragment from xml. It looks like this does not work, and child fragments can only be added dynamically. Try that and see if it fixes your issue.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top