Agregue dinámicamente fragmento en fragmento

No he sido capaz de encontrar una forma de cómo añadir dinámicamente fragmento en fragmento añadido dinámicamente existente. ¿Sabes, si es posible?

Estoy generando fragmentos de esta manera:

FragmentManager fragMgr = getSupportFragmentManager(); FragmentTransaction xact = fragMgr.beginTransaction(); if(null == fragMgr.findFragmentByTag(FRAG1_TAG)) { xact.add(10101010, new DateTime(), FRAG1_TAG); } if(null == fragMgr.findFragmentByTag(FRAG4_TAG)) { xact.add(7777, new loginForm(), FRAG4_TAG); } xact.commit(); 

¿Cómo agregar FRAG4_TAG fragmento otro?

Edit2:

I codificado duro es id poder trabajar con él en futuro (donde ll es mi linearLayout en XML):

 FrameLayout frml4 = (FrameLayout)inflater.inflate(R.layout.frame,null); frml4.setId(7777); frml4.setBackgroundColor(Color.YELLOW); ll.addView(frml4); 

Asumo que el problema que usted está funcionando en es que no hay una opinión inflada para agregar el fragmento a porque el fragmento original, FRAG4_TAG, no se ha inflado antes de que usted está intentando agregarlo.

Puede transmitir suficiente información a FRAG4_TAG en los Argumentos para que sepa que debe crear y agregar un fragmento (o lo que todos los fragmentos que necesita que tenga) a sí mismo durante su onCreateView, después de que la vista se ha inflado …

El diseño de la actividad …

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="MyActivity"/> <LinearLayout android:orientation="vertical" android:id="@+id/main_frag_container" android:layout_width="fill_parent" android:layout_height="fill_parent"/> </LinearLayout> 

La actividad…

 public class MyActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); FragmentManager fm = getFragmentManager(); FragmentTransaction ft = fm.beginTransaction(); Fragment fragOne = new MyFragment(); Bundle arguments = new Bundle(); arguments.putBoolean("shouldYouCreateAChildFragment", true); fragOne.setArguments(arguments); ft.add(R.id.main_frag_container, fragOne); ft.commit(); } } 

El diseño del fragmento …

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="20dp"> <TextView android:id="@+id/text" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Some fragment"/> <LinearLayout android:orientation="vertical" android:id="@+id/frag_container" android:layout_width="fill_parent" android:layout_height="fill_parent"/> </LinearLayout> 

El fragmento …

 public class MyFragment extends Fragment { @Override public View onCreateView(final LayoutInflater inflater, final ViewGroup container, final Bundle savedInstanceState) { ViewGroup layout = (ViewGroup) inflater.inflate(R.layout.frag_layout, container, false); boolean shouldCreateChild = getArguments().getBoolean("shouldYouCreateAChildFragment"); if (shouldCreateChild) { FragmentManager fm = getFragmentManager(); FragmentTransaction ft = fm.beginTransaction(); fm.beginTransaction(); Fragment fragTwo = new MyFragment(); Bundle arguments = new Bundle(); arguments.putBoolean("shouldYouCreateAChildFragment", false); fragTwo.setArguments(arguments); ft.add(R.id.frag_container, fragTwo); ft.commit(); } return layout; } } 

Este ejemplo cubre el caso en el que necesita agregar dinámicamente fragmentos a un fragmento que NO HA ya sido inflado y agregado a la jerarquía. La adición de un fragmento a un fragmento que ya ha sido inflado y agregado a la jerarquía es tan simple como especificar el contenedor de fragmentos de destino que desea agregar a ID como lo haría normalmente.

Como la documentación indica "Un fragmento debe estar siempre incrustado en una actividad". Así que cuando agregas un "sub-fragmento" siempre pertenecerá a la actividad incluso si la agregas dentro de tu clase de fragmento. Por ejemplo, si posteriormente decide retirar el fragmento que lo contiene, los fragmentos secundarios no se eliminarán automáticamente. Cuando tuve que hacer lo mismo tuve que almacenar en un vector los sub fragmentos y eliminarlos manualmente en los métodos onDestroy de mi fragmento de contenedor.

Creo que los fragmentos no se piensa para ser utilizado como este

No puede insertar Fragmentos en otros fragmentos. (Al menos no todavía)

Sin embargo, puede reemplazar Fragmentos con otros fragmentos con FragmentTransaction.replace(containerViewId, Fragment) .

  • Intercambio de datos entre fragmentos y actividad en Android
  • Android Fragment Animation onResume
  • ¿Hay un método que funciona como fragmento de inicio para el resultado?
  • Pestañas de la barra de acción con ViewPager con el cajón de navegación
  • Establecer el estado de BottomSheetDialogFragment a expandido
  • ¿Cómo administrar los diálogos de pantalla completa en Android?
  • Reemplazar fragmento dentro de un ViewPager
  • Error al agregar fragmentos dinámicamente -java.lang.IllegalStateException:
  • Barra de acciones hasta navegación con fragmentos
  • Resaltar el elemento seleccionado en "ListFragment"?
  • Android agrega programaticamente - posición en el padre y el diseño
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.