Tengo problemas para entender cómo administrar correctamente Fragment
s en un patrón típico de diseño de detalles de lista.Cómo administrar el estado de la IU y la pila posterior en un diseño de panel simple/doble
Mi diseño está trabajando muy bien y se estructura como esta para la vista horizontal (doble panel):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout ... >
<FrameLayout android:id="@+id/list" ... />
<FrameLayout android:id="@+id/container" ... />
</LinearLayout>
Y así durante la vista vertical (solo panel):
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout android:id="@+id/container" ... />
I también tiene un refs.xml
en res/values-w600dp/
para asegurarse de que el diseño apropiado se carga en función del ancho de la pantalla del dispositivo.
Cuando se selecciona un elemento de la lista, la vista horizontal debe mostrar la lista y los detalles uno al lado del otro, mientras que la vista vertical debe mostrar solo los detalles en pantalla completa. Cuando no se ha seleccionado nada, la vista horizontal debe mostrar la izquierda a la izquierda y el espacio en blanco a la derecha, mientras que la vista vertical debe mostrar solo la lista a pantalla completa.
Sin embargo, aquí es donde tengo problemas:
hacer yo utilizo un "principal"
Activity
para la lista + detalles diseño opcional, y otros "detalles"Activity
para el retrato, diseño solo de detalles? Esto parece ser lo que hace el ejemplo Fragments guide. He llegado a este acuerdo para trabajar en general, pero ¿cómo puedo mantener el estado de mi fragmento de detalles cuando cambia la orientación?considerar el caso opuesto se muestra arriba - rotación de vertical a horizontal mientras que los detalles son visibles significa los detalles
Activity
tendrían que serfinish()
ed por lo que el principalActivity
podría mostrar la disposición de dos paneles, pero esto también destruye los detalles fragmento y essavedInstanceState
. Si el usuario ha tipeado información en los camposEditText
en el fragmento de detalles, luego gira el dispositivo, ¿cómo puedo preservar el estado de la IU completa del fragmento de detalles cuando lo agrego al principal (dos paneles)Activity
?¿Utilizo solo un
Activity
y administro elFragment
s? Esto me permite retener el estado de la IU de detalles cuando cambia la orientación (porque Android se encarga de esto automáticamente), pero se vuelve complicado cuando se trata de la pila de respaldo.Considere el caso en la imagen - girando de paisaje a retrato cuando los detalles se muestran deben mostrar los detalles de un solo panel, pero ¿cómo administro correctamente la pila posterior y
ActionBar
icono de inicio para mostrar la lista ¿cristal? Volviendo al paisaje también necesitaría deshacer cualquier manipulación de pila que hice anteriormente, ya que ambos fragmentos serán visibles a la vez.
Después de un poco más de búsqueda, me encontré dos preguntas similares (Switch from dual pane to single pane on orientation change maintaining fragment stack y Retain Fragment state between Activities), pero mi situación es un poco diferente porque no estoy tratando de adaptar esta funcionalidad, pero mejor plan para que en la delantera. ¿Qué me estoy perdiendo? Seguramente Android puede administrar tanto la pila posterior (como en el caso de Activity
múltiple) y el estado de la IU (como en el caso único Activity
) a la vez, ¿verdad?