2012-09-12 23 views
6

को बढ़ाने में त्रुटि मुझे एक गतिविधि वर्ग मिला जो दो टैब के साथ एक एक्शनबार लागू करता है। प्रत्येक टैब TabListener पर एक अन्य टुकड़ा ?? वर्ग बुला रहा है। अगर मैं आवेदन शुरू करता हूं FragmentXY.class कहा जाता है। मैं बिना किसी समस्या के दूसरे टैब पर स्विच कर सकता हूं। लेकिन अगर मैं पहले टैब जो एक विभाजित स्क्रीन के रूप में दो अन्य टुकड़े शामिल वापस बदलने के लिये आवेदन दुर्घटनाग्रस्त हो गया और त्रुटि फेंक: InflateException बाइनरी xml फ़ाइल पंक्ति: त्रुटि बढ़ा-चढ़ाकर वर्ग टुकड़ाएंड्रॉइड फेंक InflateException बाइनरी एक्सएमएल फ़ाइल लाइन: वर्ग खंड

tab = actionBar 
    .newTab() 
    .setText("My Box") 
    .setIcon(android.R.drawable.ic_menu_help) 
    .setTabListener(new MyTabListener<FragmentXY>(this, "myXY",FragmentXY.class)); 
    actionBar.addTab(tab); 

tab = actionBar 
    .newTab() 
    .setText("QR-Code") 
    .setIcon(android.R.drawable.ic_menu_add) 
    .setTabListener(new MyTabListener<FragmentXYZ>(this, "barcode",FragmentXYZ.class)); 

actionBar.addTab(tab); 

प्रत्येक Fragment.class एक एक्सएमएल संसाधन बुला रहा है जिसमें एक बार दो अन्य टुकड़े या केवल एक टुकड़ा होता है।

FragmentXY.class

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.first_tab, container, false); 
     return view; 
    } 

first_tab.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" > 
    <fragment 
     android:name="com.febro.myfragmenttest.ListFragment" 
     android:id="@+id/listFragment" 
     android:layout_width="250dp" 
     android:layout_height="match_parent" 
     android:layout_marginTop="?android:attr/actionBarSize" 
     class="com.febro.myfragmenttest.ListFragment" ></fragment> 

    <fragment 
     android:name="com.febro.myfragmenttest.DetailFragment" 
     android:id="@+id/detailFragment" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     class="com.febro.myfragmenttest.DetailFragment" > 
    </fragment> 

</LinearLayout> 

यह कॉलबैक-methode के साथ एक समस्या है?

09-12 19:57:06.300: D/AndroidRuntime(2799): Shutting down VM 
09-12 19:57:06.300: W/dalvikvm(2799): threadid=1: thread exiting with uncaught exception (group=0x4015d760) 
09-12 19:57:06.310: E/AndroidRuntime(2799): FATAL EXCEPTION: main 
09-12 19:57:06.310: E/AndroidRuntime(2799): android.view.InflateException: Binary XML file line #6: Error inflating class fragment 
09-12 19:57:06.310: E/AndroidRuntime(2799):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:688) 
09-12 19:57:06.310: E/AndroidRuntime(2799):  at android.view.LayoutInflater.rInflate(LayoutInflater.java:724) 
09-12 19:57:06.310: E/AndroidRuntime(2799):  at android.view.LayoutInflater.inflate(LayoutInflater.java:479) 
09-12 19:57:06.310: E/AndroidRuntime(2799):  at android.view.LayoutInflater.inflate(LayoutInflater.java:391) 
09-12 19:57:06.310: E/AndroidRuntime(2799):  at com.febro.myfragmenttest.FragmentXY.onCreateView(FragmentXY.java:26) 
09-12 19:57:06.310: E/AndroidRuntime(2799):  at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:776) 
09-12 19:57:06.310: E/AndroidRuntime(2799):  at android.app.FragmentManagerImpl.attachFragment(FragmentManager.java:1133) 
09-12 19:57:06.310: E/AndroidRuntime(2799):  at android.app.BackStackRecord.run(BackStackRecord.java:628) 
09-12 19:57:06.310: E/AndroidRuntime(2799):  at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1309) 
09-12 19:57:06.310: E/AndroidRuntime(2799):  at android.app.FragmentManagerImpl$1.run(FragmentManager.java:398) 
09-12 19:57:06.310: E/AndroidRuntime(2799):  at android.os.Handler.handleCallback(Handler.java:587) 
09-12 19:57:06.310: E/AndroidRuntime(2799):  at android.os.Handler.dispatchMessage(Handler.java:92) 
09-12 19:57:06.310: E/AndroidRuntime(2799):  at android.os.Looper.loop(Looper.java:132) 
09-12 19:57:06.310: E/AndroidRuntime(2799):  at android.app.ActivityThread.main(ActivityThread.java:4126) 
09-12 19:57:06.310: E/AndroidRuntime(2799):  at java.lang.reflect.Method.invokeNative(Native Method) 
09-12 19:57:06.310: E/AndroidRuntime(2799):  at java.lang.reflect.Method.invoke(Method.java:491) 
09-12 19:57:06.310: E/AndroidRuntime(2799):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844) 
09-12 19:57:06.310: E/AndroidRuntime(2799):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602) 
09-12 19:57:06.310: E/AndroidRuntime(2799):  at dalvik.system.NativeStart.main(Native Method) 
09-12 19:57:06.310: E/AndroidRuntime(2799): Caused by: java.lang.IllegalArgumentException: Binary XML file line #6: Duplicate id 0x7f090008, tag null, or parent id 0xffffffff with another fragment for com.febro.myfragmenttest.ListFragment 
09-12 19:57:06.310: E/AndroidRuntime(2799):  at android.app.Activity.onCreateView(Activity.java:4182) 
09-12 19:57:06.310: E/AndroidRuntime(2799):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:664) 
09-12 19:57:06.310: E/AndroidRuntime(2799):  ... 18 more 
09-12 19:57:06.320: W/ActivityManager(302): Force finishing activity com.febro.myfragmenttest/.ActionbarMain 
09-12 19:57:06.400: D/dalvikvm(302): GC_FOR_ALLOC freed 13157K, 52% free 12567K/26055K, paused 68ms 
+0

अपने LogCat त्रुटियों के सभी पोस्ट करें फैली हुई है। – Sam

उत्तर

0

मैं एक ही त्रुटि (विभिन्न कार्यान्वयन) हुई:

यहाँ logcat से पूर्ण त्रुटि रिपोर्ट है। अंतर्निहित कारण यह था कि दृश्य फुले हुए खंड वर्ग में लौटाया गया था (यानी खंड के ऑनक्रेट व्यू() विधि से लौटाया गया है) अमान्य है या आपने ऑनक्रेट व्यू विधि को स्वयं लागू नहीं किया है।

अपने मामले में, देखें कि आप com.febro.myfragmenttest.ListFragment में वापस देख रहे हैं और सत्यापित करें कि यह मान्य है। मैं ऑनक्रेट व्यू विधि में ब्रेकपॉइंट सेट करने का सुझाव दूंगा।

उम्मीद है कि इससे मदद मिलती है।

0
<fragment 
    android:name="com.febro.myfragmenttest.ListFragment" 
    android:id="@+id/listFragment" 
    android:layout_width="250dp" 
    android:layout_height="match_parent" 
    android:layout_marginTop="?android:attr/actionBarSize" 
    class="com.febro.myfragmenttest.ListFragment" ></fragment> 

इस टैग में, आपके पास एंड्रॉइड दोनों नाम हैं और नाम एक ही चीज़ पर सेट है। चूंकि इन मानचित्रों को एक ही चीज़ पर, आपको केवल एक का उपयोग करना चाहिए। यही कारण है कि इस स्टैक ट्रेस में प्रकाशित हुई:

java.lang.IllegalArgumentException: Binary XML file line #6: *Duplicate id* .... 

Fragment एंड्रॉयड गाइड में, वे एक ही उद्देश्य के लिए दूसरे के स्थान पर इन का उपयोग करें।

-1

आप अपने onCreateView विधि में

super.onCreateView(inflater, container, savedInstanceState); 

लिखने के लिए की है।

+0

वह क्रिएटिव्यू – Adam

4

बस अपनी कक्षा FragmentActivity

फैली बजाय गतिविधि फैली

+0

पर उपयोग करने के बजाए अपना स्वयं का दृश्य बढ़ा रहा है यह मेरे लिए काम किया गया है। –