Вы находитесь на странице: 1из 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 Mviles

18 de abril de 2014

1 / 21

La clase Fragment

Wilfredo Cruz Yarlequ http://wcruzy.pe/ (UNP)

Aplicaciones Mviles

18 de abril de 2014

2 / 21

La clase Fragment

La clase Fragment

La clase Fragment
Con la llegada de las tablets, las actividades parecan no satisfacer todas
las necesidades que stas traan consigo. Por qu? La respuesta es
sencilla: ahora tenemos ms pantalla para mostrar ms datos, pero no
nos gustara tener que rehacer el cdigo 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 Mviles

18 de abril de 2014

3 / 21

La clase Fragment

La clase Fragment

Un fragmento representa una porcin 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. Quin no ha visto el tpico caso de datos maestro
(izquierda) ? esclavo (derecha) en una tablet, que en su versin mvil son
dos pantallas independientes, la cual la primera nos lleva a la segunda?

Wilfredo Cruz Yarlequ http://wcruzy.pe/ (UNP)

Aplicaciones Mviles

18 de abril de 2014

4 / 21

La clase Fragment

La clase Fragment

Wilfredo Cruz Yarlequ http://wcruzy.pe/ (UNP)

Aplicaciones Mviles

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 sern tambin.

Wilfredo Cruz Yarlequ http://wcruzy.pe/ (UNP)

Aplicaciones Mviles

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 librera de
retrocompatibilidad, de modo que podamos usar los fragmentos en
versiones anteriores, si deseamos que nuestra aplicacin sea compatible
(por ejemplo, con Gingerbread).

Wilfredo Cruz Yarlequ http://wcruzy.pe/ (UNP)

Aplicaciones Mviles

18 de abril de 2014

7 / 21

La clase Fragment

La clase Fragment

La transicin de fragmentos dentro de una actividad se hace por medio


de fragment transaction, las cuales podemos aadir a la cola backstack
de nuestra actividad.
De esta forma, mediante el uso del botn Back podremos deshacer una
transaccin de fragmentos y volver a uno anterior, muy similar a como
hacamos con la gestin de la cola en las actividades.

Wilfredo Cruz Yarlequ http://wcruzy.pe/ (UNP)

Aplicaciones Mviles

18 de abril de 2014

8 / 21

La clase Fragment

La clase Fragment

La transicin de fragmentos dentro de una actividad se hace por medio


de fragment transaction, las cuales podemos aadir a la cola backstack
de nuestra actividad.
De esta forma, mediante el uso del botn Back podremos deshacer una
transaccin de fragmentos y volver a uno anterior, muy similar a como
hacamos con la gestin de la cola en las actividades.

Wilfredo Cruz Yarlequ http://wcruzy.pe/ (UNP)

Aplicaciones Mviles

18 de abril de 2014

8 / 21

La clase Fragment

La clase Fragment

De todas formas, para gestionar los fragmentos dispondremos de


diferentes mtodos, 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 Mviles

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 inicializacin de la interfaz grfica o
layout se har en el mtodo onCreateView, y no ser llamando al mtodo
setContentView, sino que el objeto de la clase View que devuelva
onCreateView ser el objeto que se mostrar como interfaz grfica. Para
ello haremos uso de un inflater.

Wilfredo Cruz Yarlequ http://wcruzy.pe/ (UNP)

Aplicaciones Mviles

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 inicializacin de la interfaz grfica o
layout se har en el mtodo onCreateView, y no ser llamando al mtodo
setContentView, sino que el objeto de la clase View que devuelva
onCreateView ser el objeto que se mostrar como interfaz grfica. Para
ello haremos uso de un inflater.

Wilfredo Cruz Yarlequ http://wcruzy.pe/ (UNP)

Aplicaciones Mviles

18 de abril de 2014

10 / 21

La clase Fragment

La clase Fragment

Wilfredo Cruz Yarlequ http://wcruzy.pe/ (UNP)

Aplicaciones Mviles

18 de abril de 2014

11 / 21

La clase Fragment

La clase Fragment
Los mtodos 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 mtodo 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 mtodo getActivity.

Wilfredo Cruz Yarlequ http://wcruzy.pe/ (UNP)

Aplicaciones Mviles

18 de abril de 2014

12 / 21

La clase Fragment

La clase Fragment
Los mtodos 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 mtodo 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 mtodo getActivity.

Wilfredo Cruz Yarlequ http://wcruzy.pe/ (UNP)

Aplicaciones Mviles

18 de abril de 2014

12 / 21

La clase Fragment

La clase Fragment
Los mtodos 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 mtodo 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 mtodo getActivity.

Wilfredo Cruz Yarlequ http://wcruzy.pe/ (UNP)

Aplicaciones Mviles

18 de abril de 2014

12 / 21

La clase Fragment

La clase Fragment
Los mtodos 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 mtodo 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 mtodo getActivity.

Wilfredo Cruz Yarlequ http://wcruzy.pe/ (UNP)

Aplicaciones Mviles

18 de abril de 2014

12 / 21

La clase Fragment

La clase Fragment
Los mtodos 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 mtodo 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 mtodo getActivity.

Wilfredo Cruz Yarlequ http://wcruzy.pe/ (UNP)

Aplicaciones Mviles

18 de abril de 2014

12 / 21

La clase Fragment

La clase Fragment

Otra opcin muy importante es cuando queremos que un fragmento ejecute


cierta funcionalidad asociada a la actividad, que desconoce y tan slo 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 cuestin, la cual
pertenecer a la actividad.
Los fragmentos tendrn los mismos estados que las actividades: resumed,
paused, stopped.

Wilfredo Cruz Yarlequ http://wcruzy.pe/ (UNP)

Aplicaciones Mviles

18 de abril de 2014

13 / 21

La clase Fragment

La clase Fragment

Wilfredo Cruz Yarlequ http://wcruzy.pe/ (UNP)

Aplicaciones Mviles

18 de abril de 2014

14 / 21

La clase Fragment

La clase Fragment

Puesto que los fragmentos no son componentes de una aplicacin, stos no


deben ser declarados en el Manifest. Pero, cmo aadimos un fragmento a
una actividad? Para ello, tenemos dos opciones:

Wilfredo Cruz Yarlequ http://wcruzy.pe/ (UNP)

Aplicaciones Mviles

18 de abril de 2014

15 / 21

La clase Fragment

La clase Fragment

Declarando el fragmento de manera esttica en el layout de una actividad

Wilfredo Cruz Yarlequ http://wcruzy.pe/ (UNP)

Aplicaciones Mviles

18 de abril de 2014

16 / 21

La clase Fragment

La clase Fragment

Aadiendo dinmicamente en cdigo el fragmento a un objeto


ViewGroup existente

Wilfredo Cruz Yarlequ http://wcruzy.pe/ (UNP)

Aplicaciones Mviles

18 de abril de 2014

17 / 21

La clase Fragment

La clase Fragment

Por ltimo, mencionar que Google, para hacernos las cosas ms fciles, nos
ofrece algunos fragmentos particulares ya creados, de tal forma que nos
resulta mucho ms fcil desarrollar cierta funcionalidad. Entre ellos,
encontramos:
DialogFragment: Es un fragmento que nos permite mostrar un dilogo
ListFragment: Fragmento para gestionar una lista de vistas que se
repiten. Perfecto para cualquier lista
PreferenceFragment: Fragmento para gestionar preferencias de la
aplicacin. Hay que remarcar que este tipo de fragmento no est incluido
dentro de los compatibles en la librera de retrocompatibilidad, por lo que
no podremos hacer uso de ellos en versiones anteriores a Honeycomb.

Wilfredo Cruz Yarlequ http://wcruzy.pe/ (UNP)

Aplicaciones Mviles

18 de abril de 2014

18 / 21

La clase Fragment

La clase Fragment

Por ltimo, mencionar que Google, para hacernos las cosas ms fciles, nos
ofrece algunos fragmentos particulares ya creados, de tal forma que nos
resulta mucho ms fcil desarrollar cierta funcionalidad. Entre ellos,
encontramos:
DialogFragment: Es un fragmento que nos permite mostrar un dilogo
ListFragment: Fragmento para gestionar una lista de vistas que se
repiten. Perfecto para cualquier lista
PreferenceFragment: Fragmento para gestionar preferencias de la
aplicacin. Hay que remarcar que este tipo de fragmento no est incluido
dentro de los compatibles en la librera de retrocompatibilidad, por lo que
no podremos hacer uso de ellos en versiones anteriores a Honeycomb.

Wilfredo Cruz Yarlequ http://wcruzy.pe/ (UNP)

Aplicaciones Mviles

18 de abril de 2014

18 / 21

La clase Fragment

La clase Fragment

Por ltimo, mencionar que Google, para hacernos las cosas ms fciles, nos
ofrece algunos fragmentos particulares ya creados, de tal forma que nos
resulta mucho ms fcil desarrollar cierta funcionalidad. Entre ellos,
encontramos:
DialogFragment: Es un fragmento que nos permite mostrar un dilogo
ListFragment: Fragmento para gestionar una lista de vistas que se
repiten. Perfecto para cualquier lista
PreferenceFragment: Fragmento para gestionar preferencias de la
aplicacin. Hay que remarcar que este tipo de fragmento no est incluido
dentro de los compatibles en la librera de retrocompatibilidad, por lo que
no podremos hacer uso de ellos en versiones anteriores a Honeycomb.

Wilfredo Cruz Yarlequ http://wcruzy.pe/ (UNP)

Aplicaciones Mviles

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 cmo funcionan, el cual podemos encontrar en:
http://developer.android.com/training/basics/fragments/index.html

Wilfredo Cruz Yarlequ http://wcruzy.pe/ (UNP)

Aplicaciones Mviles

18 de abril de 2014

19 / 21

La clase Fragment

Referencias

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

ttrr
rrtsrrrrrt

Wilfredo Cruz Yarlequ http://wcruzy.pe/ (UNP)

Aplicaciones Mviles

18 de abril de 2014

20 / 21

La clase Fragment

FIN

Wilfredo Cruz Yarlequ http://wcruzy.pe/ (UNP)

Aplicaciones Mviles

18 de abril de 2014

21 / 21

Вам также может понравиться