Documentos de Académico
Documentos de Profesional
Documentos de Cultura
https://github.com/csolorzanof/DispMovilesClase3
Fragmentos
Un fragmento es una sección, porción o como lo implica el nombre un fragmento de una actividad
en Android. Un fragmento puede existir en más de una actividad y una actividad puede estar
compuesta de múltiples fragmentos. Los podemos categorizar en fragmentos estáticos y
dinámicos. Los fragmentos los podemos utilizar para simplificar la creación de layouts para
Tablets de gran tamaño utilizando layouts de doble panel. Esto permite tener una aplicación
móvil que en un dispositivo de pantalla regular muestre un layout reducido y en una pantalla de
Tablet utilice un layout que se ajuste a esta área. El utilizar un fragmento nos permite diseñar los
componentes una sola vez y reutilizarlos en diferentes configuraciones en los diferentes layouts.
En muchos sentidos el ciclo de vida de los fragmentos es muy similar al ciclo de vida de una
actividad y a primera impresión parece replicar el ciclo de vida de la actividad. Existen muchos
callbacks que se comparten entre los dos. Cuando utilizamos un fragmento en una actividad los
callbacks de sus ciclos de vida se entrelazan en sus tiempos de ejecución. La secuencia completa
de la interacción entre los fragmentos y las actividades se encuentra ilustrado en la
documentación oficial que puede ver en el enlace siguiente:
https://developer.android.com/guide/fragments/lifecycle
Los mismos pasos se ejecutan para inicializar el fragmento y prepararlo para ser mostrado para
ser utilizado por el usuario que cuando hablamos de una actividad. Los mismos pasos se ejecutan
en el fragmento cuando la aplicación pasa a segundo plano, se oculta, se cierra. Al igual que las
actividades los fragmentos deben heredar de una clase padre con todos estos callbacks llamada
Fragment. Podemos hacer un override de estos callbacks definidos en la clase padre
dependiendo el caso de uso que queramos resolver.
Los callbacks del ciclo de vida de los fragmentos son los siguientes:
Existen más callbacks para los fragmentos pero estos son los más comúnmente utilizados para la
mayoría de los casos de uso. Puede investigar más alrededor de todo lo relacionado con
fragmentos en la documentación oficial: https://developer.android.com/guide/fragments
Podemos agregar un fragmento a una actividad de dos formas editando el layout de la actividad
y en la vista de código agregar un <fragment …. > o utilizando un FragmentContainerView. La
segunda forma es la preferida.
El calificador frecuentemente utilizado para definir una resolución de una Tablet es sw donde
esto significa Shortest Width (Anchura más corta) y sirve como un punto de corte donde
definimos que si la anchura de la pantalla es mayor a el tamaño especificado entonces se debe
utilizar este layout. Por ejemplo sw600dp indica que si la pantalla es más grande que 600dp
entonces se debe utilizar el layout con este calificador (600dp es normalmente para tablets de 7
pulgadas). Con las tablets podemos utilizar layouts de doble panel.
Los Listener son un patrón de diseño común para reaccionar a cambios. Especificando una
interface listener estamos definiendo un contrato que debe ser cumplido. Las clases que
implementen el listener son notificadas de los resultados de la operación.
Puede ver que otras opciones de comodines y formatos de string existen en la documentación
oficial:
https://developer.android.com/guide/topics/resources/string-resource
Cuando utilizamos layouts lineares para que el tamaño del layout sea determinado en base al
peso (layout weigth) es necesario que se utilice 0dp en el width o height del layout para el
elemento según sea el caso. 0dp para width cuando es un layout linear horizontal y 0dp para el
height cuando es un layout linear vertical.
Según el caso de uso que se quiera resolver, utilizar fragmentos estáticos es más que suficiente
sin embargo en ocasiones donde la experiencia del usuario en una actividad requiere de 3, 4 o
más fragmentos se recomienda se utilicen fragmentos dinámicos. Esto se logra utilizando un
ViewGroup como el contenedor de los fragmentos al cual podemos agregar, reemplazar y
remover fragmentos los cuales pueden permanecer activos hasta que ya no se necesiten y no es
necesario inflarlos cada vez a través de layouts XML.
El uso de fragmentos dinámicos y estáticos aunque flexible introduce un montón de código extra
para manejar la navegación y puede volverse rápidamente en un problema al dar mantenimiento
a la aplicación. Google introdujo los componentes de Jetpack para atender esta necesidad.