2014-03-25 42 views
1

我的地圖一直在工作,直到我從本教程"Handling The Change"添加了RetainedFragment。使用保留片段會導致錯誤膨脹SupportMapFragment?

PlaceholderFragment在SplashScreenActivity.java

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

充氣包含與類com.google.android.gms.maps.SupportMapFragment片段的佈局時,會出現錯誤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" /> 

錯誤:

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

完整的堆棧:

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 

我沒有IDEIA什麼VS SupportMapFragment RetainedFragment之間的關係,但只有當我使用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(); 
} 

的簡化版,應用程序崩潰,如果我刪除此行

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

我已經創建了一個包含有一個簡單的佈局與SupportMapFragment和RetainedFragment一個簡單的活動一個簡單的項目。

簡單的項目: https://github.com/ericksprengel/support-map-fragment-vs-retained-fragment

回答

1

我不知道如何與您的RetainedFragment,這是奇怪的。

但它看起來像你的問題是有關Having an issue with GoogleMap v2 crashing app on orientation change

您創建一個佔位符片段,然後加載XML格式的子片段。看起來這不起作用,並且只能動態添加子片段。試試看看它是否解決了你的問題。

+0

這爲我工作。! [見這裏提交](https://github.com/ericksprengel/support-map-fragment-vs-retained-fragment/commit/6e9f61a728da2e2663d38ec8da6c7188379ea645) –

+0

這太奇怪了,因爲我可以膨脹片段,如果我不使用RetainedFragment。我無法理解這種關係。 = O –