Tengo tres fragmentos como se muestra en la figura a continuación. He agregado todos estos tres fragmentos en LinearLayout usando el archivo .xml y cuando se inicia mi actividad de inicio, cargo ese diseño .xml usando setContentView.
Tengo algunos controles en fragment2. Al hacer clic en cualquiera, se carga el fragmento programment programment utilizando FragmentTransaction y el método commit. Estos fragmentos se agregan a la pantalla, pero el problema es que el fragmento agregado en forma de gráfico4 ocupa toda el área de la pantalla. ¿Cual puede ser el problema?
Nota: En cualquier elemento, haga clic en f2 Quiero reemplazar solo f2 con el nuevo fragmento f4. Tenga en cuenta que he agregado f1, f2, f3 a través del archivo de diseño xml y agregado el nuevo fragmento f4 mediante programación.
Reemplazar un fragmento programáticamente
Respuesta
Siempre debe agregar, eliminar y reemplazar sus fragmentos de forma programática. Como tal, le 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, lo convierte en un elemento <FrameLayout/>
. A continuación se realiza una transacción fragmento en 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 ha hecho esto para F-1, F-2 y F-3. A continuación, reemplace f2 con f4 haciendo lo mismo nuevamente 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();
}
¿Tiene alguna referencia para que pueda tomar un ejemplo de allí? – MobiDev
Edité mi respuesta. Esto debería resolver su problema. – CodePrimate
Gracias. OK, lo que entiendo es que no pongan fragmentos directamente en el diseño xml. Ponga framelayouts en lugar de elementos de fragmento. Y mientras sustituyes f4 por f2 usa el cuadro de f2. ¿Estoy en lo cierto? Puede dar sitio de referencia para verificarlo. – MobiDev
Mantenga solo FrameLayout como marcadores de posición para el fragmento en el XML. En OnCreate carga los fragmentos en el framelayout. Al hacer clic en el fragmento, dale el ID de ese FrameLayout en particular para reemplazarlo por Fragment4.
- 1. Reemplazar fragmento con otro fragmento en el interior ViewPager
- 2. Android: no puede reemplazar un fragmento con otra
- 3. Cómo reemplazar programáticamente un HyperLinkField en un GridView de ASP.NET
- 4. Fragmento Reemplazar con ViewPager en la pestaña ActionBar
- 5. Finalizando un fragmento
- 6. Cómo reemplazar programáticamente los elementos de UIToolBar integrados en IB
- 7. Comience un fragmento a través de la intención dentro de un fragmento
- 8. Reemplazo de un Fragmento/Pestaña en un Viewpager
- 9. ¿Puedo eliminar un fragmento definido en un archivo layout.xml?
- 10. Dado un documento, seleccione un fragmento relevante
- 11. Un escáner QR dentro de un Fragmento
- 12. Tener un GestureOverlayView en un fragmento
- 13. Diferencia entre un fragmento de clase y un fragmento de objeto
- 14. ¿Cómo puedo expandir un fragmento dentro de un fragmento usando YASnippet?
- 15. ¿Cómo editas un .png programáticamente?
- 16. ¿Desencadena programáticamente un evento?
- 17. ¿Apagar un iPhone programáticamente?
- 18. Creando un UISwitch programáticamente
- 19. Creando programáticamente un proyecto
- 20. ¿Fragmento de error de backstack al reemplazar fragmentos en una transacción?
- 21. ¿Cómo confirmar programáticamente un usuario en Magento?
- 22. SELECCIONAR con un Reemplazar()
- 23. Android Fragmento backStack tema
- 24. Agregue un fragmento como encabezado ListView
- 25. Android: Agregar un fragmento a una actividad
- 26. ¿Cómo encontrar un fragmento de código similar?
- 27. ¿Cómo mostrar AlertDialog en un fragmento?
- 28. ¿Cómo restauro un Fragmento mostrado anteriormente?
- 29. deslizando un fragmento sobre otro en Android
- 30. Separar un Fragmento que no desencadena onSaveInstanceState()
No está claro. ¿Estás mostrando los cuatro fragmentos al final? –