2013-07-05 5 views
10

के बिना अन्य टुकड़े के एडिशन के बाद "फ्रैगमेंट ने कोई दृश्य नहीं बनाया" मुझे वास्तव में अजीब समस्या है। मेरे पास एक आम टुकड़ा है जो मेरे ऐप की लगभग हर गतिविधि में जोड़ा जाता है। यह टुकड़ा प्लेयर बार का एक छोटा संस्करण दिखाता है। इसलिए यह वर्तमान संगीत के नाम को अपडेट करने के लिए कुछ प्रसारण सुनता है और इसमें कुछ नियंत्रण होते हैं, जैसे प्ले/पॉज़।यूआई

जैसे मैंने कहा, मैं इस ऐप को अपने ऐप की लगभग हर गतिविधि में जोड़ता हूं और मुझे इसके साथ कोई समस्या नहीं है। लेकिन अब, मुझे एक नया टुकड़ा बनाने की जरूरत है जिसमें यूआई नहीं है और इसे बरकरार रखा गया है (setRetainInstance (true))। इस नए टुकड़े के क्रियान्वयन के बाद, सब कुछ ठीक लग रहा था। जब तक मैंने डिवाइस को घुमाया और गतिविधि दुर्घटनाग्रस्त हो गई।

07-05 14:10:23.818: ERROR/AndroidRuntime(25922): FATAL EXCEPTION: main 
     java.lang.RuntimeException: Unable to start activity ComponentInfo{com.soongz/com.soongz.ui.PlaylistActivity}: android.view.InflateException: Binary XML file line #13: Error inflating class fragment 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2110) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135) 
     at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3576) 
     at android.app.ActivityThread.access$800(ActivityThread.java:140) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1243) 
     at android.os.Handler.dispatchMessage(Handler.java:99) 
     at android.os.Looper.loop(Looper.java:137) 
     at android.app.ActivityThread.main(ActivityThread.java:4921) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:511) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794) 
     at dalvik.system.NativeStart.main(Native Method) 
     Caused by: android.view.InflateException: Binary XML file line #13: Error inflating class fragment 
     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 
     at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 
     at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 
     at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
     at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 
     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:313) 
     at com.actionbarsherlock.internal.ActionBarSherlockNative.setContentView(ActionBarSherlockNative.java:119) 
     at com.actionbarsherlock.app.SherlockFragmentActivity.setContentView(SherlockFragmentActivity.java:262) 
     at net.simonvt.menudrawer.MenuDrawer.setContentView(MenuDrawer.java:964) 
     at com.soongz.ui.BaseComMenuActivity.setContentViewComMenu(BaseComMenuActivity.java:31) 
     at com.soongz.ui.PlaylistActivity.createView(PlaylistActivity.java:111) 
     at br.com.cybereagle.androidlibrary.ui.EagleActivity.onCreate(EagleActivity.java:57) 
     at android.app.Activity.performCreate(Activity.java:5206) 
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094) 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2074) 
     ... 12 more 
     Caused by: java.lang.IllegalStateException: Fragment com.soongz.ui.fragment.PlayerReduzidoFragment did not create a view. 
     at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:303) 
     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:676) 
     ... 26 more 

इस अपवाद के बजाय नया टुकड़ा में क्या हो रहा है, टुकड़ा है कि गतिविधि में पहले से ही था में हो रहा है:

तो, लॉग में देख, मैं निम्नलिखित अपवाद देखें। यदि मैं प्लेयर बार के छोटे संस्करण के साथ खंड हटा देता हूं और यूआई के बिना नया टुकड़ा रखता हूं, तो सब कुछ सामान्य रूप से काम करता है। यह भी काम करता है अगर मैं सिर्फ पुराने टुकड़े को रखता हूं और नया हटा देता हूं।

अधिक जानकारी: पुराना टुकड़ा लेआउट एक्सएमएल के माध्यम से जोड़ा जाता है।

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:orientation="vertical" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent"> 

    <fragment 
     android:name="com.soongz.ui.fragment.ListaDeMusicasFragment" 
     android:id="@+id/lista_de_musicas_fragment" 
     style="?layoutListViewMusicas" /> 

    <fragment 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:name="com.soongz.ui.fragment.PlayerReduzidoFragment"/> 
</LinearLayout> 

नया टुकड़ा (कोई यूआई wih) निम्नलिखित तरीके से जोड़ा जाता है: जो कोई मेरी मदद कर सकते के लिए पहले से

FragmentManager fragmentManager = getSupportFragmentManager(); 
operacoesEmBackgroundFragment = (OperacoesEmBackgroundFragment) fragmentManager.findFragmentByTag(TAG_OPERACOES_EM_BACKGROUND_FRAGMENT); 

if(operacoesEmBackgroundFragment == null){ 
    operacoesEmBackgroundFragment = new OperacoesEmBackgroundFragment(); 
    fragmentManager.beginTransaction() 
      .add(operacoesEmBackgroundFragment, TAG_OPERACOES_EM_BACKGROUND_FRAGMENT) 
      .commit(); 
} 

धन्यवाद यहाँ गतिविधि की एक्सएमएल है।

अद्यतन:

मुझे कोई यूआई के साथ टुकड़ा से setRetainInstance (सही) हटा दिया देखने के लिए कि समस्या इस से संबंधित है। लेकिन समस्या अभी भी हो रही है।

उत्तर

17

हे भगवान, मैं इसे बर्बाद नहीं कर सकता। मैंने अपनी समस्या को सुलझाने वाले टुकड़े की आईडी को बस हल किया।

अब, गतिविधि की एक्सएमएल के लेआउट इस तरह है:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:orientation="vertical" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent"> 

    <fragment 
     android:name="com.soongz.ui.fragment.ListaDeMusicasFragment" 
     android:id="@+id/lista_de_musicas_fragment" 
     style="?layoutListViewMusicas" /> 

    <fragment 
     android:id="@+id/player_reduzido_fragment" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:name="com.soongz.ui.fragment.PlayerReduzidoFragment"/> 
</LinearLayout> 

मैं पता नहीं क्यों। यह एक बग होना चाहिए।

+4

यदि आप FragmentTransaction के माध्यम से प्रोग्रामेटिक रूप से खंड जोड़ रहे हैं, तो अपने टुकड़े के कंटेनर को एक आईडी देखें। इसके अलावा @FernandoCamargo मैं वर्णन नहीं कर सकता कि मैं इस त्वरित सुधार के लिए कितना आभारी हूं, धन्यवाद। –