Android desde Cero: Activities y Fragmentos
() translation by (you can also view the original English article)
Cuando un usuario interactúa con una aplicación en un dispositivo Android, ellos están interactuando casi siempre con una Activity
, concentrados en una sola pantalla en un dispositivo. Después de que Google publicará la versión Honeycomb de Android, los objetos Fragment
fueron añadidos al sistema operativo para facilitar la re-utilización de código y cambiar el contenido en la pantalla sin tener que destruir/re-construir, cada vez, una nueva Activity
.
En este tutorial, usted aprenderá más sobre los objetos Activity
y Fragment
en Android, sus ciclos de vida y cuando y cómo debería usarlos en sus propias aplicaciones.
1. Activities
Activities son una parte clave del ecosistema de Android y uno de los primeros conceptos que necesita comprender antes de familiarizarse más con el desarrollo en Android. Las Activities actúan como una sola pantalla que es mostrada al usuario y a menudo encapsulan mucha lógica de su programa.
Cuando usted tiene creada una clase Activity
, ya sea; manualmente o a través de una de las plantillas de Android Studio, usted necesita definirla en el archivo del proyecto AndroidManifest.xml, si es que aún no estaba añadida, así:
1 |
<activity android:name=".MainActivity"> |
2 |
<intent-filter>
|
3 |
<action android:name="android.intent.action.MAIN" /> |
4 |
|
5 |
<category android:name="android.intent.category.LAUNCHER" /> |
6 |
</intent-filter>
|
7 |
</activity>
|
En el fragmento anterior, también observó una etiqueta intent-filter
con un elemento action
y un category
. Si bien entrar en detalles sobre estos elementos está más allá del alcance de éste tutorial, al menos debería de saber que esas líneas adicionales son cómo el sistema sabe cual Activity
abrir primero cuando el usuario selecciona su aplicación.
Una vez que usted ha creado una Activity
, probablemente querrá asociarla con un archivo de formato XML para que pueda usar con facilidad objetos View desde la composición. Puede hacer esto en el método onCreate()
.
1 |
@Override
|
2 |
protected void onCreate(Bundle savedInstanceState) { |
3 |
super.onCreate(savedInstanceState); |
4 |
setContentView(R.layout.activity_main); |
5 |
}
|
Después de llamar setContentView()
, usted puede comenzar a hacer referencia a objetos View
desde un archivo de formato XML.
Ciclo de Vida de un Activity
En este punto, probablemente se estará preguntando que es onCreate()
y porqué estamos usándolo. El método onCreate()
es uno de los métodos asociados con el ciclo de vida de Activity
. Este es llamado cuando el Activity
es creado de primero. Aquí es donde usted puede hacer algunas de sus pasos de inicialización dentro de su Activity
como éste está garantizado para ser llamado primero en el ciclo de vida del Activity
como puede ver a continuación.



El diagrama anterior muestra el orden de los métodos llamado según un Activity
deja o introduce sus distintos condiciones posibles:
-
onCreate()
es llamado inmediatamente cuando unActivitiy
es, como el nombre lo índica, creado.onDestroy()
tiene relación a la operación contraria y es llamado cuando elActivity
es eliminado de la memoria del dispositivo. Hay algunas instancias pequeñas dondeonDestroy()
no puede ser llamado, sin embargo, eso está más allá del alcance de éste tutorial. -
onStart()
es llamado cuando unActivity
está visible para el usuario yonStop()
es llamado cuando eseActivity
ya no está visible. Estos dos pueden ser activados cuando una aplicación está colocada dentro del fondo a través del uso del botón de inicio del dispositivo y cuando la aplicación devuelve el primer plano. -
onResume()
yonPause()
están asociados con elActivity
comenzando en el primer fondo. Si otro componente introduce el primer fondo, tal como un diálogo u otroActivity
, entonces su porción del ciclo de vida es activado.
Comprender cuando cada uno de éstos métodos es llamado le evitará muchos dolores de cabeza cuando usted desarrolle y necesite hacer desaparecer/reasignar recursos dentro de sus aplicaciones.
Manejando los Cambios de Configuración
Ahora que sabe un poco sobre el ciclo de vida del Activity
, es hora de investigar qué ocurre cuando un Activity
es destruido y recreado por el sistema. Esto puede ocurrir en algunas situaciones, la más común cuando la pantalla es rotada.
El Activity
va a través del proceso estándar de desmontaje de onStop()
, onPause()
, onDestroy()
y entonces, onCreate()
cuando una nueva instancia del Activity
es creado.
Otro método que no se muestra en el diagrama anterior es onSaveInstanceState()
. Este método es llamado como un Activity
que está siendo destruido y le permite a usted guardar una información sencilla dentro del paquete. Cuando onCreate()
, es llamado nuevamente, usted puede extraer esa información que usted guardo anteriormente. Lo mismo puede ser hecho desde el método onRestoreInstanceState()
.
2. Fragmentos
Presentado con Android 3.0 (Honeycomb), los objetos Fragment
son una herramienta asombrosa que maneja múltiples situaciones que fueron problemáticas cuando sólo la clase Activity
estaba disponible. Fragments permiten organizar los componentes de interfaz de usuario de un proyecto para diferentes dispositivos al darle la habilidad de mostrar múltiples segmentos de interfaz de usuarios en una pantalla grande, tal como una tableta, o para mostrar una a la vez y enlazarlas juntas en un dispositivo portátil más pequeño.
Además, ayudan a manejar el código en trozos manejables en vez de tener que depender de una clase Actvity
compleja y más grande. Una de las últimas, y más valiosas, características es que fragments permiten la navegación fácil de una aplicación y proporcionan una manera simple de comunicarse a través de diferentes secciones de una aplicación.
Ciclo de Vida
Tal como la clase Activity
, la clase Fragment
tiene su propio ciclo de vida que ayuda a manejar el Fragment
desde el momento que éste es adjuntado a un Activity
hasta que éste es destruido. Comprender el ciclo de vida ayuda a crear aplicaciones que son estables y, además, ayudan con su depuración.



-
onAttach()
yonDetach()
indican cuando un fragment ha sido añadido a unActivity
y el fragment es utilizable dentro de la aplicación. -
onCreate()
es llamado como un método inicializado para las clasesFragment
yonDestroy()
es un equivalente e a un des-inicializador. -
onCreateView()
es el método en el cual usted instancia una composición y los objetosView
para el fragment.onDestroyView()
es llamado cuando la vista jerárquica asociada con el fragment es eliminada. -
onStart()
yonStop()
actúan de manera similar al ciclo de vidaActivity
de sus homólogos. Estos métodos son activados cuandoFragment
se vuelve visible o cuando se detiene respectivamente. -
onPause()
yonStart()
, también son similares a losActivity
homólogos. Cuando unFragment
es visible, pero su foco ha cambiado, uno de estos dos métodos es invocado.
Subclases Fragment
Aunque la clase Fragment
es poderosa en su propia forma, ésta no puede alcanzar su potencial completo sin ser extendida para servir al propósito de su aplicación. Por fortuna, Google ha proporcionado muchas clases diferentes menores de Fragment
para ayudar a los desarrolladores a construir rápidamente aplicaciones estupendas.
En esta sección, quiero resaltar algunas de ellas para inspirarle a construir sus estupendas clases Fragment
. Es importante saber que estos fragmentos integrados están disponibles para usted, de modo que no tiene que reinventar la rueda.
ListFragment
Este Fragment
tiene incorporado un ListView
y algunos métodos útiles para hacer resaltar sus componentes, tales como una ProgressBar
indefinida (un complemento circular de carga que está girando) y un TextView
para mostrar texto cuando la List
esté vacía.
MapFragment
Este es un Fragment
invaluable que envuelve un MapView
para usar con los servicios de Google Map. En lugar de tener que escribir todo su código personal, usted puede incluir este Fragment
para conseguir la funcionalidad base del mapa dentro de su aplicación.
BrowseFragment
y DetailsFragment
Estas dos clases Fragment
están disponibles como un parte de Android TV LeanBack Support Library y controlan las consideraciones de la interfaz de usuario y la funcionalidad básica para desarrollar aplicaciones para un dispositivo de televisión.
En Conclusión
Aunque este tutorial solamente ha tocado la superficie sobre cómo funcionan las clases Activity
y Fragment
, ahora debería saber que son componentes claves para construir la interfaz de usuario de sus aplicaciones. Se le ha presentado el ciclo de vida de los activities y los objetos fragment y hemos visto algunas subclases Fragment
que, convenientemente, pueden ayudar a construir aplicaciones asombrosas.
A medida que usted continúe trabajando con Android, usted entenderá y aprenderá sobre muchas clases Activity
y Fragment
que están disponibles para usted y, sin duda, usted construirá sus propias clases.