Usuario:ManuelRomero/Fragmentos

=Concepto=
 * Tradicionalmente una pantalla de una aplicación se asocia con una clase Activity específica
 * El concepto de Fragments se introducen en la versión de Android 3(Honeycomb)
 * Las librerías de soporte de android permiten usar Fragments desde la version Android 1.6


 * De esta forma no tenemos que tener una aplicación para cada tipo de dispositivo.
 * Referencias web
 * 1) http://developer.android.com/reference/android/app/Fragment.html
 * 2) http://www.vogella.com/articles/AndroidFragments/article.html
 * 3) http://www.edu4android.com/es/guide/topics/fundamentals/fragments.html

Idea de fragment



 * Es frecuente usar un Fragment como parte de una actividad
 * Es parte de la Interfaz Gráfica de la activity, aportando su propio layout.

Creando un Fragment

 * 1) Para crear una clase que sea un fragment, debemos extenderla de la clase Fragment
 * También tenemos subclases que son Fragment especializados que veremos posteriormente
 * 1) DialogFragment
 * 2) ListFragment
 * 3) PreferenceFragment
 * 4) WebViewFragment
 * Asignar el layout al fragment
 * Un fragment no puede existir sin un activity. El fragment aportará su IU (Interfaz de Usuario) a la activity.
 * Para ello se implementa el método callback onCreateView
 * Este método debe devolver un View que es el layout de este fragmento

Cómo ya hemos comentado parte de la interfaz gráfica de la activity la pone el fragment
 * Para ello a un fragment le tenemos que aportar su interfaz gráfico
 * Implementar el método onCreateView. Este método es invocado por el sistema cuando se quiere que el fragment cargue el layout.
 * Este método retorna un View que es la raiz del layout del fragmento
 * Parámetros
 * inflater 


 * Un objeto LayoutInflater sirve para cargar un fichero layout xml con sus correspondientes objetos gráficos
 * De esta forma, a partir de un archivo xml (layout) podemos cargar una vista (objeto view)  dentro del fichero java.  con esto podemos agregar esta vista a otro layout o modificar sus objetos.
 * container 


 * Es el contenedor gráfico ViewGroup del layout de la activity donde el fragment será insertado
 * savedInstanceState 


 * Un objeto Bundle que guarda información sobre la instancia de una activity o fragment para posteriormente reanudarlo en el estado en el que estuviera. Este parámetro permite recuperar la instancia del fragment si éste está siendo reanudado

Cargando el Fragment en una Activity

 * El Fragement depende de un Activity
 * Para cargar Fragment dentro de un activity y por lo tanto su parte UI, lo podemos realizar de dos maneras
 * 1) directamente indicarlo en el fichero xml del layout de la Activity principal
 * 2) En tiempo de ejecución usando el objeto la clase  FragmentTransaction

cogemos el view del Fragment que nos devuelve el método onCreateView(...) del Fragement
 * La clase Activity es la responsable de gestionar los controles View.


 * Para realizar una actualización o modificación de un Fragment, se utiliza la clase FragmentTransaction
 * 1) Sirve para agregar (de nuevo o volver a agregar) un Fragemnte a una clase Activity
 * 2) Ocultar o mostrar un Fragment en un View

Ciclo de vida del Fragment

 * El fragement tiene su propio ciclo de vida, presentando los siguientes métodos para ir de un estado a otro.
 * onAttach
 * Un Fragement se adjunta por primera vez a una Activity


 * onCreate
 * Un Fragment se crea por primera vez


 * onCreateView
 * onActivityCreated
 * onStart
 * onResume
 * onPause
 * onStop
 * onDestroyView
 * onDestroy
 * onDetach
 * onDetach

Fragment especializados

 * Tenemos subclases que
 * 1) ListFragment
 * 2) PreferenceFragement
 * 3) WebViewFragment
 * 4) DialogFragment

Definir Fragments
A continuación realizaremos un ejemplo
 * Creamos un proyecto llamado fragmentos
 * Usamos un mínimo de versión 3.0
 * Cremos u nuevo xml de layout llamado detalle
 * Ahora modificamos el fichero main.xml para que muestre la aplicación en modo tablet
 * Debemos poner la orientación horizontal
 * Cada fragment tendrá asociada su propia clase
 * Ahora creamos las clases ListaFragmento y DetalleFramento
 * La clase ListaFragmento


 * La clase DetalleFragmento

Crear los layout para modo móvil

 * Ahora para garantizar que funcione en modo móvil, hay que crear layouts de este modo
 * Para ello creamos dentro del folder /res el folder layout-port.
 * Allí ubicaremos un nuevo main.xml que creamos para que sea el que se lea cuando el dispositivo esté en modo portrait.
 * Android, inicialmente busca una carpeta llamada layout-port, si no lo encuentra, busca en el folder layout.
 * Creamos la carpeta layout-port
 * Creamos el fichero activity_main.xml
 * Fichero activity_main