2011-10-17 10 views
8

Estimadas personas de StackOverflow,¿Cómo puedo usar FragmentManager para mostrar el Fragmento A, B, C, ... en un FrameLayout?

Actualmente tengo un gran problema en mi aplicación de Android.

estoy usando fragmentos de todas mis actividades y me lea todo el documento aquí: http://developer.android.com/guide/topics/fundamentals/fragments.html

Mi aplicación tiene ahora un aspecto muy fresco en teléfonos y tabletas.

Mi pregunta:

Tengo un diseño que muestra una Fragmentos que se incluye en un FrameLayout (ver captura de pantalla en la parte inferior)

Por lo tanto, esta es una captura de pantalla con el fragmento A.

Ahora, me gustaría cuando se hace clic en un botón izquierdo, para reemplazar el fragmento a con el fragmento B, o C, o ...

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <fragment android:name="com.stackoverflow.question.FRAGMENT_A" 
      android:id="@+id/list" 
      android:layout_weight="1" 
      android:layout_width="0dp" 
      android:layout_height="match_parent" /> 
</FrameLayout> 

Como puede ver en mi xml, FRAGMENT_A está codificado.

Imagine que quiero cambiar entre 6 fragmentos diferentes, ¿qué debo hacer? Coloque todos mis 6 fragmentos en el XML, o hay una forma de reemplazar FRAGMENT_A mediante programación FRAGMENT_B, C, D, E, etc.

Muchas gracias por su ayuda.

enter image description here

Respuesta

14

uso FragmentTransaction para reemplazar fragmentos.

puede hacer el reemplazo de fragmentos programáticamente.

FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
FragmentB fb = new FragmentB(); 
ft.replace(R.id.list, fb); 
ft.addToBackStack("replacingFragmentA"); 
ft.commit(); 

add to back stack is optional.

Cuestiones relacionadas