Sunteți pe pagina 1din 29

La clase Fragment

Parte IV

Wilfredo Cruz Yarlequé 1 http://wcruzy.pe/

Universidad Nacional de Piura wcruzy@unp.edu.pe

18 de abril de 2014

1 Ingeniero Industrial

Wilfredo Cruz Yarlequé http://wcruzy.pe/

(UNP)

Aplicaciones Móviles

18 de abril de 2014 1 / 21
18 de abril de 2014
1 / 21

1 La clase Fragment

Wilfredo Cruz Yarlequé http://wcruzy.pe/

(UNP)

Aplicaciones Móviles

18 de abril de 2014 2 / 21
18 de abril de 2014
2 / 21

La clase Fragment

La clase Fragment

Con la llegada de las tablets, las actividades parecían no satisfacer todas las necesidades que éstas traían consigo. ¿Por qué? La respuesta es sencilla: ahora tenemos más pantalla para mostrar más datos, pero no nos gustaría tener que rehacer el código haciendo actividades totalmente nuevas. Con toda esta idea, surge el concepto fragmento desde Android HoneyComb 3.0 (API 11).

Wilfredo Cruz Yarlequé http://wcruzy.pe/

(UNP)

Aplicaciones Móviles

18 de abril de 2014 3 / 21
18 de abril de 2014
3 / 21

La clase Fragment

La clase Fragment

Un fragmento representa una porción de interfaz de usuario o un comportamiento en una actividad. De esta forma, podemos combinar varios fragmentos en una única actividad, de tal forma que podemos crear un panel multi interfaz y reusar un fragmento en diferentes actividades. ¿Quién no ha visto el típico caso de datos maestro (izquierda) ? esclavo (derecha) en una tablet, que en su versión móvil son dos pantallas independientes, la cual la primera nos lleva a la segunda?

Wilfredo Cruz Yarlequé http://wcruzy.pe/

(UNP)

Aplicaciones Móviles

18 de abril de 2014 4 / 21
18 de abril de 2014
4 / 21

La clase Fragment

La clase Fragment

La clase Fragment La clase Fragment Wilfredo Cruz Yarlequé http://wcruzy.pe/ (UNP) Aplicaciones Móviles 18 de abril

Wilfredo Cruz Yarlequé http://wcruzy.pe/

(UNP)

Aplicaciones Móviles

18 de abril de 2014 5 / 21
18 de abril de 2014
5 / 21

La clase Fragment

La clase Fragment

Un fragmento debe siempre ser incluido en una actividad, y su ciclo de vida está totalmente relacionado con el ciclo de vida de la actividad que lo contiene. De esta forma, por ejemplo, si una actividad es pausada, todos sus fragmentos lo serán también.

Wilfredo Cruz Yarlequé http://wcruzy.pe/

(UNP)

Aplicaciones Móviles

18 de abril de 2014 6 / 21
18 de abril de 2014
6 / 21

La clase Fragment

La clase Fragment

Los fragmentos fueron incluidos en HoneyComb, pero han resultado ser tan trascendentales, que Google ha facilitado una librería de retrocompatibilidad, de modo que podamos usar los fragmentos en versiones anteriores, si deseamos que nuestra aplicación sea compatible (por ejemplo, con Gingerbread).

Wilfredo Cruz Yarlequé http://wcruzy.pe/

(UNP)

Aplicaciones Móviles

18 de abril de 2014 7 / 21
18 de abril de 2014
7 / 21

La clase Fragment

La clase Fragment

La transición de fragmentos dentro de una actividad se hace por medio de fragment transaction, las cuales podemos añadir a la cola backstack de nuestra actividad.

De esta forma, mediante el uso del botón Back podremos deshacer una transacción de fragmentos y volver a uno anterior, muy similar a como hacíamos con la gestión de la cola en las actividades.

Wilfredo Cruz Yarlequé http://wcruzy.pe/

(UNP)

Aplicaciones Móviles

18 de abril de 2014 8 / 21
18 de abril de 2014
8 / 21

La clase Fragment

La clase Fragment

La transición de fragmentos dentro de una actividad se hace por medio de fragment transaction, las cuales podemos añadir a la cola backstack de nuestra actividad.

De esta forma, mediante el uso del botón Back podremos deshacer una transacción de fragmentos y volver a uno anterior, muy similar a como hacíamos con la gestión de la cola en las actividades.

Wilfredo Cruz Yarlequé http://wcruzy.pe/

(UNP)

Aplicaciones Móviles

18 de abril de 2014 8 / 21
18 de abril de 2014
8 / 21

La clase Fragment

La clase Fragment

De todas formas, para gestionar los fragmentos dispondremos de diferentes métodos, tanto para encontrar un fragmento concreto (findFragmentById / findFragmentByTag) o para gestionar la cola backstack (popBackStack -el cual permite deshacer un cambio del backstack-/ addOnBackStackChangedListener).

Wilfredo Cruz Yarlequé http://wcruzy.pe/

(UNP)

Aplicaciones Móviles

18 de abril de 2014 9 / 21
18 de abril de 2014
9 / 21

La clase Fragment

La clase Fragment

Los fragmentos tienen su propio ciclo de vida, pero íntimamente relacionado con el de su actividad contenedora. Si bien esto es cierto, hay que decir que el ciclo de vida es muy similar al de la actividad, pero con ligeras diferencias.

En el caso de los fragmentos, la inicialización de la interfaz gráfica o layout se hará en el método onCreateView, y no será llamando al método setContentView, sino que el objeto de la clase View que devuelva onCreateView será el objeto que se mostrará como interfaz gráfica. Para ello haremos uso de un inflater.

Wilfredo Cruz Yarlequé http://wcruzy.pe/

(UNP)

Aplicaciones Móviles

18 de abril de 2014 10 / 21
18 de abril de 2014
10 / 21

La clase Fragment

La clase Fragment

Los fragmentos tienen su propio ciclo de vida, pero íntimamente relacionado con el de su actividad contenedora. Si bien esto es cierto, hay que decir que el ciclo de vida es muy similar al de la actividad, pero con ligeras diferencias.

En el caso de los fragmentos, la inicialización de la interfaz gráfica o layout se hará en el método onCreateView, y no será llamando al método setContentView, sino que el objeto de la clase View que devuelva onCreateView será el objeto que se mostrará como interfaz gráfica. Para ello haremos uso de un inflater.

Wilfredo Cruz Yarlequé http://wcruzy.pe/

(UNP)

Aplicaciones Móviles

18 de abril de 2014 10 / 21
18 de abril de 2014
10 / 21

La clase Fragment

Wilfredo Cruz Yarlequé http://wcruzy.pe/

(UNP)

La clase Fragment

Wilfredo Cruz Yarlequé http://wcruzy.pe/ (UNP) La clase Fragment Aplicaciones Móviles 18 de abril de 2014 11

Aplicaciones Móviles

18 de abril de 2014 11 / 21
18 de abril de 2014
11 / 21

La clase Fragment

La clase Fragment

Los métodos que permiten coordinar el ciclo de vida de un fragmento con una actividad son:

onAttach: Llamado cuando el fragmento ha sido asociado con la actividad

onCreateView: Llamado para crear la vista asociada con el fragmento

onActivityCreated: Llamado cuando termine el método onCreate de la actividad

onDestroyView: Llamado cuando se elimina la vista asociada al fragmento

onDetach: Llamado cuando el fragmento está siendo eliminado de la actividad

No obstante, en todo momento tendremos acceso a la actividad contenedora de un fragmento mediante la llamada al método getActivity.

Wilfredo Cruz Yarlequé http://wcruzy.pe/

(UNP)

Aplicaciones Móviles

18 de abril de 2014 12 / 21
18 de abril de 2014
12 / 21

La clase Fragment

La clase Fragment

Los métodos que permiten coordinar el ciclo de vida de un fragmento con una actividad son:

onAttach: Llamado cuando el fragmento ha sido asociado con la actividad

onCreateView: Llamado para crear la vista asociada con el fragmento

onActivityCreated: Llamado cuando termine el método onCreate de la actividad

onDestroyView: Llamado cuando se elimina la vista asociada al fragmento

onDetach: Llamado cuando el fragmento está siendo eliminado de la actividad

No obstante, en todo momento tendremos acceso a la actividad contenedora de un fragmento mediante la llamada al método getActivity.

Wilfredo Cruz Yarlequé http://wcruzy.pe/

(UNP)

Aplicaciones Móviles

18 de abril de 2014 12 / 21
18 de abril de 2014
12 / 21

La clase Fragment

La clase Fragment

Los métodos que permiten coordinar el ciclo de vida de un fragmento con una actividad son:

onAttach: Llamado cuando el fragmento ha sido asociado con la actividad

onCreateView: Llamado para crear la vista asociada con el fragmento

onActivityCreated: Llamado cuando termine el método onCreate de la actividad

onDestroyView: Llamado cuando se elimina la vista asociada al fragmento

onDetach: Llamado cuando el fragmento está siendo eliminado de la actividad

No obstante, en todo momento tendremos acceso a la actividad contenedora de un fragmento mediante la llamada al método getActivity.

Wilfredo Cruz Yarlequé http://wcruzy.pe/

(UNP)

Aplicaciones Móviles

18 de abril de 2014 12 / 21
18 de abril de 2014
12 / 21

La clase Fragment

La clase Fragment

Los métodos que permiten coordinar el ciclo de vida de un fragmento con una actividad son:

onAttach: Llamado cuando el fragmento ha sido asociado con la actividad

onCreateView: Llamado para crear la vista asociada con el fragmento

onActivityCreated: Llamado cuando termine el método onCreate de la actividad

onDestroyView: Llamado cuando se elimina la vista asociada al fragmento

onDetach: Llamado cuando el fragmento está siendo eliminado de la actividad

No obstante, en todo momento tendremos acceso a la actividad contenedora de un fragmento mediante la llamada al método getActivity.

Wilfredo Cruz Yarlequé http://wcruzy.pe/

(UNP)

Aplicaciones Móviles

18 de abril de 2014 12 / 21
18 de abril de 2014
12 / 21

La clase Fragment

La clase Fragment

Los métodos que permiten coordinar el ciclo de vida de un fragmento con una actividad son:

onAttach: Llamado cuando el fragmento ha sido asociado con la actividad

onCreateView: Llamado para crear la vista asociada con el fragmento

onActivityCreated: Llamado cuando termine el método onCreate de la actividad

onDestroyView: Llamado cuando se elimina la vista asociada al fragmento

onDetach: Llamado cuando el fragmento está siendo eliminado de la actividad

No obstante, en todo momento tendremos acceso a la actividad contenedora de un fragmento mediante la llamada al método getActivity.

Wilfredo Cruz Yarlequé http://wcruzy.pe/

(UNP)

Aplicaciones Móviles

18 de abril de 2014 12 / 21
18 de abril de 2014
12 / 21

La clase Fragment

La clase Fragment

Otra opción muy importante es cuando queremos que un fragmento ejecute cierta funcionalidad asociada a la actividad, que desconoce y tan sólo quiere delegar en la actividad e indicarle que debe ejecutarla. Para ello haremos uso de callbacks. Un callback nos permite implementar una interfaz con nuestra actividad, y obtener una instancia de esa actividad implementada en nuestro fragmento y que sea este objeto quien llame a la funcionalidad en cuestión, la cual pertenecerá a la actividad. Los fragmentos tendrán los mismos estados que las actividades: resumed, paused, stopped.

Wilfredo Cruz Yarlequé http://wcruzy.pe/

(UNP)

Aplicaciones Móviles

18 de abril de 2014 13 / 21
18 de abril de 2014
13 / 21

La clase Fragment

La clase Fragment

La clase Fragment La clase Fragment Wilfredo Cruz Yarlequé http://wcruzy.pe/ (UNP) Aplicaciones Móviles 18 de abril

Wilfredo Cruz Yarlequé http://wcruzy.pe/

(UNP)

Aplicaciones Móviles

18 de abril de 2014 14 / 21
18 de abril de 2014
14 / 21

La clase Fragment

La clase Fragment

Puesto que los fragmentos no son componentes de una aplicación, éstos no deben ser declarados en el Manifest. Pero, ¿cómo añadimos un fragmento a una actividad? Para ello, tenemos dos opciones:

Wilfredo Cruz Yarlequé http://wcruzy.pe/

(UNP)

Aplicaciones Móviles

18 de abril de 2014 15 / 21
18 de abril de 2014
15 / 21

La clase Fragment

La clase Fragment

Declarando el fragmento de manera estática en el layout de una actividad

de manera estática en el layout de una actividad Wilfredo Cruz Yarlequé http://wcruzy.pe/ (UNP)

Wilfredo Cruz Yarlequé http://wcruzy.pe/

(UNP)

Aplicaciones Móviles

18 de abril de 2014 16 / 21
18 de abril de 2014
16 / 21

La clase Fragment

La clase Fragment

Añadiendo dinámicamente en código el fragmento a un objeto ViewGroup existente

en código el fragmento a un objeto ViewGroup existente Wilfredo Cruz Yarlequé http://wcruzy.pe/ (UNP)

Wilfredo Cruz Yarlequé http://wcruzy.pe/

(UNP)

Aplicaciones Móviles

18 de abril de 2014 17 / 21
18 de abril de 2014
17 / 21

La clase Fragment

La clase Fragment

Por último, mencionar que Google, para hacernos las cosas más fáciles, nos ofrece algunos fragmentos particulares ya creados, de tal forma que nos resulta mucho más fácil desarrollar cierta funcionalidad. Entre ellos, encontramos:

DialogFragment: Es un fragmento que nos permite mostrar un diálogo

ListFragment: Fragmento para gestionar una lista de vistas que se repiten. Perfecto para cualquier lista

PreferenceFragment: Fragmento para gestionar preferencias de la aplicación. Hay que remarcar que este tipo de fragmento no está incluido dentro de los compatibles en la librería de retrocompatibilidad, por lo que no podremos hacer uso de ellos en versiones anteriores a Honeycomb.

Wilfredo Cruz Yarlequé http://wcruzy.pe/

(UNP)

Aplicaciones Móviles

18 de abril de 2014 18 / 21
18 de abril de 2014
18 / 21

La clase Fragment

La clase Fragment

Por último, mencionar que Google, para hacernos las cosas más fáciles, nos ofrece algunos fragmentos particulares ya creados, de tal forma que nos resulta mucho más fácil desarrollar cierta funcionalidad. Entre ellos, encontramos:

DialogFragment: Es un fragmento que nos permite mostrar un diálogo

ListFragment: Fragmento para gestionar una lista de vistas que se repiten. Perfecto para cualquier lista

PreferenceFragment: Fragmento para gestionar preferencias de la aplicación. Hay que remarcar que este tipo de fragmento no está incluido dentro de los compatibles en la librería de retrocompatibilidad, por lo que no podremos hacer uso de ellos en versiones anteriores a Honeycomb.

Wilfredo Cruz Yarlequé http://wcruzy.pe/

(UNP)

Aplicaciones Móviles

18 de abril de 2014 18 / 21
18 de abril de 2014
18 / 21

La clase Fragment

La clase Fragment

Por último, mencionar que Google, para hacernos las cosas más fáciles, nos ofrece algunos fragmentos particulares ya creados, de tal forma que nos resulta mucho más fácil desarrollar cierta funcionalidad. Entre ellos, encontramos:

DialogFragment: Es un fragmento que nos permite mostrar un diálogo

ListFragment: Fragmento para gestionar una lista de vistas que se repiten. Perfecto para cualquier lista

PreferenceFragment: Fragmento para gestionar preferencias de la aplicación. Hay que remarcar que este tipo de fragmento no está incluido dentro de los compatibles en la librería de retrocompatibilidad, por lo que no podremos hacer uso de ellos en versiones anteriores a Honeycomb.

Wilfredo Cruz Yarlequé http://wcruzy.pe/

(UNP)

Aplicaciones Móviles

18 de abril de 2014 18 / 21
18 de abril de 2014
18 / 21

La clase Fragment

La clase Fragment

Al igual que las actividades, la mejor forma de comprender los fragmentos es con un ejemplo completo de cómo funcionan, el cual podemos encontrar en:

Wilfredo Cruz Yarlequé http://wcruzy.pe/

(UNP)

Aplicaciones Móviles

18 de abril de 2014 19 / 21
18 de abril de 2014
19 / 21

Referencias

La clase Fragment

Referencias La clase Fragment El Android Libre Aprende Android en 20 conceptos. Empezando a programar para

El Android Libre Aprende Android en 20 conceptos. Empezando a programar para Android

Wilfredo Cruz Yarlequé http://wcruzy.pe/

(UNP)

Aplicaciones Móviles

18 de abril de 2014 20 / 21
18 de abril de 2014
20 / 21

Wilfredo Cruz Yarlequé http://wcruzy.pe/

(UNP)

La clase Fragment

FIN

Aplicaciones Móviles

18 de abril de 2014 21 / 21
18 de abril de 2014
21 / 21