2012-08-02 15 views
5

Estoy desarrollando una aplicación de Android haciendo uso de fragmentos que es más un formulario Maestro/Detalle. Quiero que la actividad principal consista en un fragmento de lista en el lado izquierdo, en función del elemento elegido a la izquierda, quiero mostrar un fragmento con un diseño diferente en el lado derecho. (Nota: cada fragmento de la derecha requiere diferentes diseños/vistas)¿Cómo intercambiar fragmentos con diferentes diseños en Android?

Todos los ejemplos que he encontrado hacen uso de un solo fragmento común a la derecha al cambiar algunos valores o al intercambiar o reemplazar fragmentos nuevos teniendo el mismo diseño.

Si alguien pudiera arrojar algo de luz sobre este problema, entonces me ayudará inmensamente. ¡Gracias!

Respuesta

9

Si está utilizando framelayouts para contener sus fragmentos, es el mismo que los otros que menciona. Simplemente crea una instancia de su fragmento (cualquiera que sea el diseño) y lo intercambia en el framelayout en lugar del otro.

Si ha codificado sus fragmentos en el XML, no podrá hacerlo (hasta donde he podido determinar).

main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/frames" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_above="@id/hline1" 
    android:layout_below="@id/horizontalline" 
    android:orientation="horizontal" > 
    <FrameLayout 
     android:id="@+id/leftpane" 
     android:layout_width="0px" 
     android:layout_height="match_parent" 
     android:layout_weight=".4" /> 
    <TextView 
     android:id="@+id/verticalline" 
     android:layout_width="2dp" 
     android:layout_height="match_parent" 
     android:background="@color/bar_background" 
     android:gravity="center_horizontal" 
     android:paddingLeft="5dip" 
     android:paddingRight="5dip" /> 
    <FrameLayout 
     android:id="@+id/rightpane" 
     android:layout_width="0px" 
     android:layout_height="match_parent" 
     android:layout_weight="1" > 
    </FrameLayout> 
</LinearLayout> 

continuación, se utiliza el ID para el FrameLayout y el nombre de su fragmento instanciada para poner su fragmento en el FrameLayout.

EventListFragment eventlist = new EventListFragment(); 
getFragmentManager().beginTransaction().replace(R.id.leftpane, eventlist).commit(); 

EventDetailFragment eventadd = new EventDetailFragment(); 
getFragmentManager().beginTransaction().replace(R.id.rightpane, eventadd).commit(); 

Cuando desea cambiar los contenidos, hacer lo mismo otra vez (lo siguiente sería reemplazar el fragmento en el panel de la derecha con un nuevo/diferente fragmento, que puede tener su propia, diferente, diseño asociado con it):

EventSuperDetailFragment eventsuper = new EventSuperDetailFragment(); 
getFragmentManager().beginTransaction().replace(R.id.rightpane, eventsuper).commit(); 
+0

Muchas gracias por su ayuda! El concepto de fragmento es bastante nuevo para mí. ¿Podrías ilustrar tu punto con un simple ejemplo? –

+0

He actualizado mi respuesta, con suerte lo orientará en la dirección correcta. ¡Házmelo saber! – Barak

+0

Gracias Barak !!! Sí, funcionó! También quería saber si es posible crear un fragmento dentro de un fragmento. –

Cuestiones relacionadas