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?
- ¿Cómo puedo eliminar la cadena de caracteres dinámicos de una cadena?
- Repoblando valores en Android Fragment onResume
- Android Cómo quitar (") carácter de cadena
- Fragmento replace () no reemplaza todos los fragmentos
- INSERTAR O IGNORAR tabla con la clave AUTOINCREMENT en Android
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.
- ¿Reemplazar un carácter por otro carácter en una cadena en android?
- Buscar una subcadena entre ciertos caracteres en un índice desconocido
- ScrollView setOverScrollMode reemplazo en API <9
- Android Development: Cómo reemplazar parte de un EditText con un Spannable
- ¿Alguien puede sugerir una alternativa más rápida a este algoritmo de regex?
- ¿Deshabilitar el botón de inicio en la aplicación para niños pequeños?
- FragmentTransaction.replace reemplaza sólo el primer Fragment en un contenedor
- ¿Cómo puedo utilizar FragmentManager para mostrar Fragmento A, B, C, ... en un FrameLayout?
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 DialogFragment onViewCreated no se llama
- ¿Agregar un atajo de inicio de aplicación en Eclipse?