IllegalStateException: Fragmento ya agregado en el fragmento tabhost

09-19 12:23:01.084: E/AndroidRuntime(24169): FATAL EXCEPTION: main 09-19 12:23:01.084: E/AndroidRuntime(24169): Process: com.example.loan, PID: 24169 09-19 12:23:01.084: E/AndroidRuntime(24169): java.lang.IllegalStateException: Fragment already added: FormFragment{428f10c8 #1 id=0x7f050055 form} 09-19 12:23:01.084: E/AndroidRuntime(24169): at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1192) 09-19 12:23:01.084: E/AndroidRuntime(24169): at android.support.v4.app.BackStackRecord.popFromBackStack(BackStackRecord.java:722) 09-19 12:23:01.084: E/AndroidRuntime(24169): at android.support.v4.app.FragmentManagerImpl.popBackStackState(FragmentManager.java:1533) 09-19 12:23:01.084: E/AndroidRuntime(24169): at android.support.v4.app.FragmentManagerImpl$2.run(FragmentManager.java:489) 09-19 12:23:01.084: E/AndroidRuntime(24169): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1484) 09-19 12:23:01.084: E/AndroidRuntime(24169): at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:450) 09-19 12:23:01.084: E/AndroidRuntime(24169): at android.os.Handler.handleCallback(Handler.java:733) 09-19 12:23:01.084: E/AndroidRuntime(24169): at android.os.Handler.dispatchMessage(Handler.java:95) 09-19 12:23:01.084: E/AndroidRuntime(24169): at android.os.Looper.loop(Looper.java:136) 09-19 12:23:01.084: E/AndroidRuntime(24169): at android.app.ActivityThread.main(ActivityThread.java:5068) 09-19 12:23:01.084: E/AndroidRuntime(24169): at java.lang.reflect.Method.invokeNative(Native Method) 09-19 12:23:01.084: E/AndroidRuntime(24169): at java.lang.reflect.Method.invoke(Method.java:515) 09-19 12:23:01.084: E/AndroidRuntime(24169): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792) 09-19 12:23:01.084: E/AndroidRuntime(24169): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:608) 09-19 12:23:01.084: E/AndroidRuntime(24169): at dalvik.system.NativeStart.main(Native Method) 

Así que, tengo una aplicación para Android que se construye con el tabhost. Hay tres fichas en total, en la tab2, hay un botón para hacer la transacción de fragmento en tab2 (que está llamando a la función en la actividad de fragmento)

 FragmentTransaction t = getSupportFragmentManager().beginTransaction(); t.replace(R.id.realtabcontent, mFrag); t.addToBackStack(null); t.commit(); 

Hay excepción si corro así:

  1. Dentro de la tab2, presiono el botón para cambiar el fragmento
  2. Vaya a otra pestaña (por ejemplo, pestaña 1 o pestaña 3)
  3. Presione el botón Atrás
  4. Probar excepción

¿Cómo arreglar eso? Gracias por ayudar

4 Solutions collect form web for “IllegalStateException: Fragmento ya agregado en el fragmento tabhost”

Esto sucede cuando intentamos agregar el mismo fragmento o DialogFragment dos veces antes de descartar,

solo llama

 if(mFragment.isAdded()) { return; //or return false/true, based on where you are calling from } 

Usted sólo tiene que comprobar una condición en su fragmento mencionado a continuación:

 if(!isAdded()) { return; } 

IsAdded = Devuelve true si el fragmento se agrega actualmente a su actividad. Tomado del documento oficial. Esto no agregará ese fragmento si ya está agregado

Consulta el siguiente enlace para una referencia:
http://developer.android.com/reference/android/app/Fragment.html#isAdded ()

Sólo tiene que comprobar una condición antes de iniciar la transacción de fragmentos

  if (!fragmentOne.isAdded()){ transaction = manager.beginTransaction(); transaction.add(R.id.group,fragmentOne,"Fragment_One"); transaction.commit(); } 

Esto está trabajando perfactly para mí …

A veces sucede por no encontrar la identificación correcta del diseño respectivo. Me enfrenté a este problema. Luego, después de muchas horas, descubrí que me había equivocado con el ID de reciclaje. Lo cambio, y funciona bien para mí.

Por lo tanto, verifique el diseño de su fragmento.

  • RecyclerView onBindViewHolder sólo se llama una vez dentro del diseño de la pestaña
  • Controlador de medios que aparece en los fragmentos equivocados y que comienza antes de la pestaña se muestra
  • Cómo crear una nueva línea o pestaña en <string> XML (eclipse / android)?
  • Fragmento de actualización de Android ViewPager
  • Comunicarse entre diferentes instancias del mismo fragmento
  • Fragmento del buscapersonas que se oculta detrás de Tab Bar
  • Cómo cambiar el estilo de pestaña en Android?
  • Acceso mediante programación a una vista que se define en XML de un fragmento en Android
  • ¿Cómo mantener el estado del fragmento sin backstack en la pestaña?
  • Pestañas de Viewpager Fragmento y Fragmentos normales
  • Cómo abrir pestaña en Espresso
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.