Reemplazar un fragmento mediante programación

Tengo tres fragmentos como se muestra en la siguiente figura. He agregado todos estos tres fragmentos en LinearLayout usando el archivo .xml y cuando mi actividad del lanzador comienza que carga esa disposición .xml usando setContentView.

Tengo algunos controles en el fragmento2. Al hacer clic en cualquiera carga el fragmento4 mediante programación utilizando el método FragmentTransaction y commit. Estos fragmentos se añaden a la pantalla, pero el problema es que el fragmento agregado de forma programática4 toma todo el área de la pantalla. ¿Cual puede ser el problema?

Nota: En cualquier elemento haga clic en f2 Quiero reemplazar sólo f2 con nuevo fragmento f4. Tenga en cuenta que he añadido f1, f2, f3 a través de archivo de diseño xml y añadir nuevo fragmento f4 por programación.

Introduzca aquí la descripción de la imagen

Siempre debe agregar, quitar y reemplazar sus fragmentos mediante programación. Como tal, sugiero que reemplace sus fragmentos F-1, F-2 y F-3 con contenedores como FrameLayout.

Básicamente, en lugar de tener un elemento <fragment/> como F-1, se convierte en un elemento <FrameLayout/> . A continuación, realiza una transacción de fragmento en la función OnCreate de su FragmentActivity:

 Fragment1 f1 = new Fragment1(); FragmentTransaction ft = getFragmentManager().beginTransaction(); ft.replace(R.id.f1_container, f1); // f1_container is your FrameLayout container ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); ft.addToBackStack(null); ft.commit(); 

Ahora, supongamos que usted ha hecho esto para F-1, F-2 y F-3. A continuación, reemplazar f2 con f4 haciendo lo mismo de nuevo en su OnClickListener :

 public void onClick(View v) { Fragment4 f4 = new Fragment4(); FragmentTransaction ft = getFragmentManager().beginTransaction(); ft.replace(R.id.f2_container, f4); // f2_container is your FrameLayout container ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); ft.addToBackStack(null); ft.commit(); } 

Mantener sólo FrameLayout como marcadores de posición para el fragmento en el XML. En el OnCreate cargar los fragmentos en el framelayout. Haga clic en el fragmento, dé el ID particular de FrameLayout para reemplazar por Fragment4.

  • Android: no se puede reemplazar un fragmento con otro
  • Cadenas en android / java, replace () no hace nada
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.