Sei sulla pagina 1di 3

Cómo crear tu primera "Activity"

Por: Aurora Rodríguez @condesa_sama

Cuando quieres hacer uso de cualquiera de los bloques principales de


Android como Activities, Services, Broadcast Receivers y Content
Providers, usualmente empiezas con la creación de una subclase de
una clase base Java que provee elframework de Android y
sobreescribes ciertos métodos heredados de esa clase padre.

Uno de los elementos básicos para que empieces a construir


cualquier aplicación Android es hacer uso de Activities, que
puedes concebir como cada una de las pantallas con las que van
a interactuar tus usuarios. El primer paso es crear una clase Java
que herede de la clase Activity de Android. En Java esta relación de
herencia la defines al utilizar la palabra extends en la firma de la clase.
Por ejemplo así aparecería la firma de tu primera actividad en tu
archivo:

MyFirstActivity.java:
class MyFirstActivity extends Activity { …}

La clase Activity pone a tu disposición un par de métodos que puedes


sobreescribir para que tu clase se comporte como una actividad. Estos
métodos forman parte de lo que se conoce como “el ciclo de vida de
una actividad”. Debes tener presente que, como desarrollador, no
puedes controlar en qué estado se encuentra una actividad en
determinado momento, pero sí puedes indicar qué quieres que pase
durante la transición de un estado a otro.

Este tipo de programación, que involucra la creación de


subclases de clases del sistema para llenar los espacios en
blanco, es también conocida comoTemplate Pattern.

A medida que aprendas a construir aplicaciones Android cada vez


más complejas, te darás cuenta de que, como mínimo, implementas el
método onCreate() que elActivityManager invoca cuando creas la
actividad por primera vez. En este método usualmente inicializas uno
de los procesos más pesados para el CPU, que es la creación de la
UI.

Observa que el método onCreate() recibe como parámetro un objeto


de tipoBundle. Este objeto representa una pequeña cantidad de
información que puede ser pasada a una actividad a través
del Intent que la inició. La información que se provee dentro de
un Bundle está típicamente limitada a tipos básicos de datos. Datos
más complejos necesitan ser codificados de forma especial. No es
obligatorio que pases información a cada una de las actividades que
lances.

Uno de los puntos que debes tener presente cuando sobreescribas un


método es que siempre deberás hacer una llamada al método original
del padre. Es por esto que si utilizas la opción de autocompletado de
Eclipse para insertar el métodoonCreate() verás que dentro de él
tienes una llamada a super.onCreate().

Por ello cada vez que hagas una subclase de una clase
del framework de Android sobreescribe apropiadamente sus métodos
y haz una llamada a super dentro de ellos. En el momento en el que
has agregado la implementación del métodoonCreate() tu actividad
puede comportarse de la misma forma en que lo hace la clase original.
A partir de este momento puedes empezar a agregar tu propio código
para que tu clase haga las cosas especiales que hará tu aplicación.

La primera cosa que generalmente haces dentro del


método onCreate() de una actividad es cargar la UI desde el archivo
XML e inflarlo dentro del espacio de memoria de Java. En otras
palabras, escribes código Java que abre el archivo delayout en XML,
lo parsea y por cada elemento en el XML, crea un correspondiente
objeto de Java en tu espacio de memoria. Por cada atributo de un
elemento particular en el XML, este código establecerá ese atributo al
objeto Java. Este proceso es conocido como “inflar desde XML” y la
línea de código que hace todo esto es:

setContentView(R.layout.my_first_activity);

En todo proyecto Android existe una clase llamada R.java que es un


archivo que se autogenera cada vez que agregas nuevos recursos a
tu proyecto y este a su vez es el que genera de forma automática un
conjunto de apuntadores que te ayudan a conectar el mundo de Java
con el mundo de XML y otros recursos del directoriores/. De manera
similar, R.layout.my_first_activity apunta a tu archivo res/layout/
my_first_activity.xml.

Este método setContentView() hace un montón de trabajo. Lee el


archivo XML, lo parsea, crea todos los objetos Java apropiados para
que correspondan con los elementos en XML, establece las
propiedades de los objetos que correspondan a los atributos en XML,
define las relaciones padre/hijo entre los objetos, y en conjunto, infla la
vista entera. Al final de esta simple línea tu pantalla está lista para
pintarse.

Los objetos que creas para tu aplicación no son los únicos que definen
métodos y responden a estímulos externos. Android te provee de
un pack de objetos de tipoView que puedes agregar a tu interfaz de
usuario para que respondan a interacciones del usuario y puedan
disparar otras acciones. De esta forma puedes decirle a un
objeto Button que ejecute cierto código cuando detecte un clic sobre
él. Para hacer esto necesitas definir un método llamado onClick() y
dentro poner el código que quieras ejecutar. También debes ejecutar
el método setOnClickListener()sobre el Button. Pasas esto como un
argumento del método setOnClickListener()porque tu objeto está
donde defines el onClick(). El ejemplo más básico para hacerlo sería:

Button myButton;myButton = (Button)


findViewById(R.id.my_button);myButton.setOnClickListener(new
OnClickListener(){ @Override public void onClick(View
v){ }});