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.

  • Después de que el fragmento de cambio de configuración de backstack ahora está compartiendo el FrameLayout?
  • Imagen de fondo de pantalla completa en una actividad
  • Cómo usar el arrastrar correctamente de una vista en android
  • Agregar y eliminar un TextView dinámicamente en Android
  • Cómo obtener una foto de video jugando dentro de FrameLayout en android?
  • Advertencia: Este <FrameLayout> se puede reemplazar con una etiqueta <merge>
  • La altura de la vista de niño de Android no coincide con el padre en el elemento de ListView
  • El botón siempre aparece en la parte superior de FrameLayout
  • Cómo deshabilitar detrás de ver haga clic en evento Framelayout
  • problemas con Android FrameLayout cuando override onDraw
  • Convierta el diseño del marco en imagen y guárdelo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.