Pregunta

Estoy comenzando una aplicación de panal que tendrá un diseño básico de dos paneles, un panel a la izquierda para el menú y otra a la derecha para la funcionalidad principal de cada sección.

Al contrario de las muestras disponibles de la API de fragmentos, el contenido que se muestra en el panel derecho consiste en una interfaz de usuario completamente diferente para cada una de las opciones de menú.

Es tentador reemplazar el fragmento correcto de acuerdo con la sección seleccionada, pero esto significaría usar solo una actividad en toda la aplicación, y esto no suena bien. Además, el ciclo de vida del fragmento está vinculado a la actividad, por lo que no se matarán fragmentos hasta que la actividad sea asesinada, lo que resulta en muchos fragmentos "vivos".

Sin embargo, tener una actividad diferente con dos paneles para cada opción de menú significa que el fragmento utilizado para el menú deberá agregarse en cada actividad y estará sujeto a diseños inconsistentes en todas las secciones que deberían tener un menú.

¿Cuáles son las mejores prácticas aquí?

¿Fue útil?

Solución

Este La publicación del blog resume las razones para elegir fragmentos sobre actividades:

Las actividades integradas a través de Activity Group fueron una buena idea, pero siempre han sido difíciles de tratar ya que la actividad está diseñada para ser un componente independiente autónomo en lugar de interactuar de cerca con otras actividades. La API del fragmento es una solución mucho mejor para esto, y debe considerarse como un reemplazo para actividades integradas.

La retención de datos en las instancias de actividad podría lograrse a través de la actividad. El fragmento reemplaza ese mecanismo al permitirle conservar una instancia completa de fragmentos con solo establecer una bandera.

Una especialización del fragmento llamado DialogFragment hace que sea fácil mostrar un diálogo que se gestiona como parte del ciclo de vida de la actividad. Esto reemplaza las API de "diálogo administrado" de la actividad.

Otra especialización del fragmento llamado ListFragment hace que sea fácil mostrar una lista de datos. Esto es similar a la ListActivity existente (con algunas características más), pero debería reducir la pregunta común sobre cómo mostrar una lista con otros datos.

La información sobre todos los fragmentos adjuntos actualmente a una actividad es guardada para usted por el marco en el estado de instancia guardado de la actividad y se restaura para usted cuando se reinicia. Esto puede reducir en gran medida la cantidad de código de ahorro de estado que necesita para escribir.

El marco tiene soporte incorporado para administrar una trama de fondo de objetos de fragmentos, lo que facilita la proporcionar un comportamiento del botón de retroceso intraactividad que integra la pila de actividad existente. Este estado también se guarda y restaura para usted automáticamente.

Los fragmentos son bastante nuevos, así que más allá de ese artículo, no estoy seguro de que encuentres mucho para las mejores prácticas. Creo que la decisión que debe tomar es mis interacciones estrechamente acopladas y destinadas a compartir datos o son componentes independientes que no tienen mucha interacción.


editar, aclaración: Creo que usar una sola actividad para una aplicación no es necesariamente una mala decisión. Realmente es una decisión que debes tomar en función de la funcionalidad de tu aplicación. Según el artículo, una actividad es independiente, mientras que un fragmento es, típicamente, solo relevante cuando se combina con otros fragmentos en el alcance de una actividad. La situación que describe, con combinaciones de diferentes actividades es uno de los puntos de dolor que diseñaron fragmentos para resolver.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top