Android: cuando / por qué debo usar FrameLayout en lugar de Fragment?

Estoy construyendo un diseño para pantallas grandes, que se supone que consiste en 2 partes diferentes, una izquierda y una derecha. Para hacer eso pensé usando 2 Fragmentos es la opción correcta.

Luego eché un vistazo al ejemplo de la navegación con el Master / Detail-Flow . Tiene un diseño de 2 paneles, donde a la derecha está la navegación, ya la izquierda está la vista de detalle.

Pero en ese ejemplo, diferente a lo que esperaba ver, para la vista de detalle hay un FrameLayout que entonces contiene un Fragment , en lugar de un Fragment directamente.

La disposición XML se parece a esto (un ejemplo):

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginLeft="16dp" android:layout_marginRight="16dp" android:baselineAligned="false" android:divider="?android:attr/dividerHorizontal" android:orientation="horizontal" android:showDividers="middle" tools:context=".WorkStationListActivity" > <fragment android:id="@+id/workstation_list" android:name="de.tuhh.ipmt.ialp.history.WorkStationListFragment" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" tools:layout="@android:layout/list_content" /> <FrameLayout android:id="@+id/workstation_detail_container" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="3" /> </LinearLayout> 

Mi pregunta ahora es: ¿por qué se utiliza un FrameLayout lugar del Fragment sí para la vista de detalle? ¿Cuál es la razón o la ventaja? ¿Debo usarlo también?

El contenedor de detalle es FrameLayout porque el Fragment que se muestra se reemplazará mediante el método replace() FragmentTransaction .

El primer argumento a replace() es el ID del contenedor cuyos Fragmentos serán reemplazados. Si FrameLayout en este ejemplo se reemplazó con un fragmento, entonces tanto el WorkStationListFragment como cualquier fragmento de detalle que se muestra actualmente se reemplazaría por el nuevo fragmento. Al encapsular el fragmento dentro de un FrameLayout, puede reemplazar sólo los detalles.

Agregue un fragmento a una actividad utilizando <fragment> si no lo necesita para responder a los cambios en la interfaz de usuario. De lo contrario, utilice un <FrameLayout> Un diseño de trama es un tipo de grupo de vistas que se utiliza para bloquear un área en la pantalla.

  • Android: nesting FrameLayouts - ¿cuál es la sobrecarga de rendimiento exacto?
  • El botón siempre aparece en la parte superior de FrameLayout
  • Android: cómo escalar una imagen para llenar el fondo de un LinearLayout sin preservar la relación de aspecto?
  • Cómo obtener una foto de video jugando dentro de FrameLayout en android?
  • Dos diseños de marco en el ejemplo de FragmentTabs de Android Support4Demos
  • problemas con Android FrameLayout cuando override onDraw
  • Superposición de texto sobre imageview en framelayout mediante programación - Android
  • Rotación de 90 grados en la vista web de FrameLayout en Android
  • Layout_marginLeft funciona correctamente en Android API <11 cuando View in FrameLayout
  • Android: Establecer márgenes en un FrameLayout mediante programación, no funciona
  • Cómo obtener clics en dos botón solapado en la misma disposición de marco en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.