Diferencia entre revisiones de «Usuario:ManuelRomero/Android/Fragement/Conceptos»
(→Los Fragments) |
(→Los Fragments) |
||
Línea 75: | Línea 75: | ||
#En la aplicación añadiendo al ViewGroup. | #En la aplicación añadiendo al ViewGroup. | ||
*También se puede usar un fragment sin UI (no entiendo para qué ????) | *También se puede usar un fragment sin UI (no entiendo para qué ????) | ||
+ | ===Creando single and multi pane Layout=== | ||
+ | http://developer.android.com/guide/practices/tablets-and-handsets.html | ||
+ | *Para usar el potencial de los fragment a la hora de realizar el diseño tenemos dos opciones | ||
+ | #Varios Fragments en 1 Activity | ||
+ | independientemente del tamaño de la pantalla del dispositivo (tablet o handset), definimos una | ||
+ | sola '''''Activity''''' | ||
+ | En tiempo de ejecución se decide si combinamos los Fragment en la Activity, o cargamos solo uno | ||
+ | de ellos | ||
+ | #Varios Fragments y varias Activitys | ||
+ | Si el tamaño del dispositivo lo permite cargamos los Fragment en una de las Activity, si no cargaremos cada una de las '''''Activity''''' | ||
+ | |||
+ | *Ambas opciones son buenas | ||
+ | La primera opción requiere que determinemos el tamaño de la pantalla del dispositiv en tiempo de ejecución y entonces decidamos añadir cada fragment según sea apropiado. | ||
+ | |||
+ | *Dependiendo del tamaño de la ventana el sistema aplica diferentes xml layuout: | ||
+ | #res/layout/main.xml para handset (pantallas pequeñas) | ||
+ | #res/layout-large/main.xml para tables | ||
+ | |||
+ | En nuestro ejemplo vamos a usar el segundo caso y tendremos en total 3 Activity y 2 Fragment |
Revisión de 10:26 17 mar 2014
Trabajo en proceso, espera cambios frecuentes. Tu ayuda y retroalimentación son bienvenidos. Ver página de charlas. |
Referencias
- http://www.sgoliver.net/blog/?p=3496
- http://developer.android.com/reference/android/app/Fragment.html
La clase Fragment
- Un fragment es una parte de una actividad, con su propia interfaz de usuario y comportamiento.
- De este modo podemos tener una actividad costruida a partir de uno o varios Fragment
- Por otro lado podemos usar el mismo Fragment para asignarlo a diferentes Activity
- En la figura tenemos una app con dos Activity, y otra app con una única Activity que contiene dos Fragment
Herencia
La clase Fragment hereda directamente de Object como podemos ver en la imagen
Haciendo un fragment
- Todo fragmente ha de tener asociado un layout y una clase java
- Un Fragment tiene su propio ciclo de vida que conviene conocer
- Un Fragmente no se puede ejecutar de forma independiente; Para ser ejecutado en una app siempre pertenecerá a una Activity.
- Su ejecución estará ligada a la ejecución de la Activity, pero tiene su propio ciclo de vida.
- hay una serie de métodos que conviene conocer:
- onAttach
- Llamado una vez que el Fragment es asociado a la Activity
onAttach(Activity)
- onCreate
- Invocado para crear el Fragment dentro de nuestra app.
onCreate(Bundle)
- onCreateView
- Crea la UI de usuario correspondiente a este Fragment y lo retorna para que forme parte de la UI de la Activity de la que depende
- Dentro de este método es donde asignamos el layout correspondiente al Fragment, y lo devolvemos para que la activity lo incorpore en su UI.
onCreateView(LayoutInflater, ViewGroup, Bundle)
- onActivityCreated
- Cuando la Activity de la que depende el Fragment, ya ha sido creada
- A partir de ahora podemos invocar a getActivity() para recuperar una referencia a dicha activity
onActivityCreated(Bundle);
- Cada Fragment tiene su layout
Activity propietaria de los fragmente
- http://jarroba.com/programar-fragments-fragmentos-en-android/
- Ahora definimos una activity que incorporará los layouts
- Como toda Activity contendrá su layout, pero en este caso vamos a definir tres diferentes, aunque con el mismo nombre
- Esto es por que en este caso queremos contemplar tres situaciones
- Que la acitivity se ejecuta en un móvil pequeño, solo mostraremos uno de los layouts del framgent en un memento determinado
- Que la activity se ejecuta en una tablet grande en posición horizontal.
- Que la activity se ejecuta en una tables grande en posición vertical.
- Para que esto funcione cada uno de estos layouts, todos con el mismo nombre pues son el layout de una Activity, lo guardaremos en diferentes carpetas
- Un Fragment solo puede funcionar en el código ligado a una Activity
- Para poder interaccionar con fragment: FragementManager
- Obetener un Fragementmanager = Activity.getFragmentManager() o Fragment.getFragmentManager()
- Todas las subclases de un fragment deben de incluir un constructor vacion público para que al restaurar una actividad no nos de un posible error
Los Fragments
- http://developer.android.com/guide/components/fragments.html
- You can think of a fragment is a modular section of an activity.
- When an Activity is running, you can manipulate each fragment independently (add them, remove them ,...).
- When you perform such a fragment transaction (cuando ejecutas un fragment con transaccional)...
Puedes poner el fragment en la pila administrada por la activity pudiendo luego recuperarla con el backward (boton de atrás ). Al añadir un fragment como parte del UI de una activity, Este UI pertenecerá a la jerarquía de la vista de la actividad (formando parte de su ViewGroup o contenedor principal), definiendo el fragment su propio layout.
- Existen dos formas de agregar un fragment a un layout
- declarando en el fichero xml del la activity como un <fragment>
- En la aplicación añadiendo al ViewGroup.
- También se puede usar un fragment sin UI (no entiendo para qué ????)
Creando single and multi pane Layout
http://developer.android.com/guide/practices/tablets-and-handsets.html
- Para usar el potencial de los fragment a la hora de realizar el diseño tenemos dos opciones
- Varios Fragments en 1 Activity
independientemente del tamaño de la pantalla del dispositivo (tablet o handset), definimos una sola Activity En tiempo de ejecución se decide si combinamos los Fragment en la Activity, o cargamos solo uno de ellos
- Varios Fragments y varias Activitys
Si el tamaño del dispositivo lo permite cargamos los Fragment en una de las Activity, si no cargaremos cada una de las Activity
- Ambas opciones son buenas
La primera opción requiere que determinemos el tamaño de la pantalla del dispositiv en tiempo de ejecución y entonces decidamos añadir cada fragment según sea apropiado.
- Dependiendo del tamaño de la ventana el sistema aplica diferentes xml layuout:
- res/layout/main.xml para handset (pantallas pequeñas)
- res/layout-large/main.xml para tables
En nuestro ejemplo vamos a usar el segundo caso y tendremos en total 3 Activity y 2 Fragment