2012-09-12 12 views
6

me dio una clase de actividades que ponen en práctica un actionbar con dos pestañas. Cada pestaña llama a otra clase de Fragment ??. Sobre el TabListener. Si inicio la aplicación, se llama al FragmentXY.class. Puedo cambiar a la segunda pestaña sin ningún problema. Pero si me cambio de nuevo a la primera ficha que contiene los otros dos fragmentos como una pantalla dividida, se bloqueó la aplicación y tirar el error: InflateException binaria línea de archivo xml: fragmento de la clase Error inflarandroide tiro InflateException línea de archivo XML binario: Error fragmento de la clase de inflado

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); 

Cada Fragment.class está llamando un recurso XML que contienen una vez que dos otros fragmentos o sólo un fragmento.

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> 

¿Es un problema con la devolución de llamada-Methode?

Aquí está el informe de error completo de Logcat:

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

Por favor enviar todas sus errores LogCat. – Sam

Respuesta

0

me he encontrado en el mismo error (una implementación diferente). La causa subyacente se debió a la vista devuelta en la clase fragmento de inflado (es decir devueltos desde el método del fragmento onCreateView()) no es válida o que no puso en práctica el método onCreateView sí.

En su caso, active la vista que se está volviendo en com.febro.myfragmenttest.ListFragment y verificar que es válido. Sugeriría establecer un punto de interrupción en el método onCreateView.

Espero que esto ayude.

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> 

En esta etiqueta, tiene ambos android: nombre y clase configurados para la misma cosa. Dado que estos se asignan a la misma cosa, solo debes usar uno. Es por esto que este apareció en el seguimiento de pila:

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

En la guía androide Fragment, utilizan estos indistintamente con el mismo propósito.

-1

usted tiene que escribir

super.onCreateView(inflater, container, savedInstanceState); 

en su método onCreateView.

+0

Él está inflando su propio punto de vista en lugar de utilizar onCreateView – Adam

4

simplemente extiende su clase extiende FragmentActivity

lugar de actividad se extiende

+0

Esto se ha trabajado para mí. –

Cuestiones relacionadas