Ir al contenido principal

Tutorial / Manual / HOWTO Programación Android desde cero - Parte 3

Hola a todos, para comenzar esta tercera parte, que mejor que recordar que es lo que vamos a ver.

La segunda parte del tutorial terminó diciendo que quedaba por ver como crear diferentes pantallas, como "registrarlas" en el programa, y como manejarnos de una a otra.

Bien, pues lo primero que debemos de hacer es abrir nuestro proyecto de ejemplo de la parte anterior, o crearnos si queremos uno nuevo en blanco, yo explicare como si creásemos de nuevo otro proyecto desde 0.

Desde el explorador de proyectos:
click derecho -> nuevo proyecto de android


Creamos el proyecto, en mi caso tutorial_android_3, que implemente una actividad (le he dejado el nombre por defecto), como target de la api de android he puesto que se usará la versión 2.2.



Una vez terminemos, deberemos de tener algo parecido a esto:

Bien, en el proyecto tenemos una sola actividad que hemos llamado One_Activity. Ahora vamos a proceder a crear una segunda actividad. Para eso haremos click derecho en el paquete de nuestra aplicación y seleccionaremos nueva -> clase. La clase que creemos deberá heredar de la clase Activity.



Una vez creada deberemos de indicar en el manifiesto del programa que existen 2 actividades, para hacer esto editaremos el archivo AndroidManifest.xml, y desde la pestaña application deberemos de realizar los siguientes pasos:


A continuación lo que hay que hacer es escribir el nombre de la actividad. Es importante decir que el nombre de la actividad aquí hay que escribirla con un punto delante.


No debemos de olvidarnos de guardar el manifiesto una vez hallamos añadido la nueva actividad. Una vez lo hagamos se actualizará el manifiesto y podremos invocar a la nueva actividad sin que ocurra ningún fallo.


Una vez tengamos hayamos añadido la nueva actividad al proyecto, quedan por hacer tres pasos más.
  • Diseñar las pantallas necesarias.
  • Añadir el código necesario para llamar a la segunda actividad desde la primera.
  • Añadir el código necesario para llamar a la primera actividad desde la segunda.

Vamos a diseñar las pantallas, la interfaz que vamos implementar será similar a la siguiente:

Diseño de una pantalla
Las diferentes pantallas o layouts se crean en la carpeta res/layout. Lo primero que vamos a hacer va a ser modificar la pantalla que se genera por defecto, main.xml, una aplicación siempre debe tener un layout llamado main.xml. Además de este se pueden añadir todos los que se deseen.

La primera pantalla después de modificar main,xml quedaría así:

Código de main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#dcdcdc"
    android:orientation="vertical"
    android:padding="15px" >
    <Button
        android:id="@+id/mainNextButton"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Ir a la actividad 2" android:onClick="siguiente"/>

    <Button
        android:id="@+id/mainExitButton"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Salir" android:onClick="finish"/>
</LinearLayout>

En la primera pantalla hemos añadido dos botones:
  • Uno para ir la siguiente actividad, y que he identificado, siguiendo el patrón <pantalla><IdBoton>, como mainNextButton, además responde al evento onClick llamando al método siguiente, que deberemos incluir dentro de la clase One_Activity.
  • El otro botón se utilizará para cerrar la actividad correctamente. Se ha identificado como mainExitButton, y responde al evento onClick llamando al método finish(View v), que debemos de escribir.


Ahora se añade la segunda pantalla al proyecto, que vamos a llamar second_screen.xml, y se inserta en ella el botón necesario para volver a la anterior actividad:



Esta segunda pantalla solamente posee un botón, con id second_screenPrevButton, y que responde al evento onClick llamando al método finish(View v), que debemos de escribir.

Código de second_screen.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#dcdcdc"
    android:orientation="vertical"
    android:padding="15px" >

    <Button
        android:id="@+id/second_screenPrevButton"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Ir a la actividad 1" android:onClick="finish"/>
</LinearLayout>


Añadiendo el código a las actividades

Ahora vamos añadir el código a las actividades. La idea será la siguiente:

Se implementará un método siguiente en la clase One_Activity llamado siguiente, en él se insertará el código necesario para invocar a la segunda actividad. Esta invocación se realiza mediante intents. Un intent es una descripción abstracta de una operación que se desea realizar.

Código de la primera actividad 

package com.jesusenlanet.tutorial3;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;

public class One_Activity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
    
    public void siguiente(View v){
     Intent siguienteActividad = new Intent(One_Activity.this, Other_Activity.class);
     startActivity(siguienteActividad);
    }
    
    public void finish(View v){
     finish();
    }
}

En la primera actividad se han añadido dos métodos, siguiente para llamar  a la segunda actividad, y finish(View) para terminar correctamente. Se indica también que se use el layout main.xml.

En el método siguiente, se crea un intent, especificando el contexto desde el que se está llamando, y la clase actividad que queremos llamar. Una vez creado el intent, se inicia la segunda actividad mediante el método startActivity(Intent).

El método finish que se necesita añadir, recibe como parámetro de entrada una vista (View), esto es así por que a las funciones que son llamadas desde el método onClick de los layouts, se las llama pasando automáticamente como argumento la vista. En cuerpo de este método solamente nos limitamos a llamar al método finish, que no recibe parámetros, y procede a terminar la actividad.

Código de la segunda actividad

package com.jesusenlanet.tutorial3;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;

public class Other_Activity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.second_screen);
    }
    
    public void finish(View v){
    finish();
    }
}


En esta actividad solamente se indica que se cargue el layout second_screen.xml y se añade un método finish(View) para terminar la segunda actividad. Una vez termine se vuelve automáticamente a la primera actividad.





Ya se ha visto como se llaman a otras actividades, y cual es método correcto para terminar las mismas. Además se ha visto como modificar el archivo AndroidManifest.xml para indicar las actividades de las que consta el programa, además de ver con más detalle como se organiza un layout.





Comentarios

  1. Ya me he terminado el manual , para iniciarse está genial , de normal las configuraciones de entornos etc etc son engorrosas , aqui todo genial! ahora a trastear un poco y a ver que sale :)

    ResponderEliminar
  2. gracias mi compaaaaaaaaaaa jjojojojojoo

    ResponderEliminar
  3. Gracias por publicar estos manuales para gente que aun no se encuentra familiarizado con la programacion en android.
    Gracias!!!!

    ResponderEliminar
  4. yei muchas gracias, la vdd muy bueno, para que videos y libros si con estos 3 tutoriales aprendi lo basico

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

Join o producto cartesiano de dos tablas en EXCEL 2007

Hace unos dias inicie mi ocupacion como becario de informatica en la facultad de humanidades y ciencias de la educacion de la UJAEN. Y como no, no han tardado en surgir los problemas. Supongamos que tenemos dos tablas, y queremos hacer una tabla que tenga datos de estas dos tablas, segun un criterio , y es que solo pueden aparecer ciertas filas, mas exactamente aquellas donde coincida cierto campo, en este ejemplo, el codigo de la asignatura. Si queremos realizar el join o producto cartesiano tal y como lo hariamos en una base de datos, parece ser que si no estamos trabajando con una bbdd sino con Excel, la cosa se complica un poco. Para "multiplicar tablas" en excel, primero vamos a hacer una cosa, cada tabla la vamos a guardar en hojas separadas, en nuestro caso, una tabla la guardamos en Hoja1 , y la otra en Hoja2 Ahora, nos situamos en la hoja donde queramos que aparezca el producto cartesiano de nuestras dos tablas, nos vamos a la ficha DATOS . Veremos que h

Descargar código fuente desde Google App Engine

Estaba desarrollando una aplicación en google app engine, cuando un día, al llegar al trabajo (hoy), me doy cuenta que no tengo acceso a mi versión de desarrollo. Como la ultima versión que estaba desarrollando, justo la noche de antes la había subido a google app engine, pues me dije: "Ya esta, me conecto y me descargo el código fuente" ERROR 404 // SOLUCIÓN A IDEA MÁGICA NO ENCONTRADA Tras buscar por google, observo que hay muchas voces que dicen que no te puedes descargar el código fuente, que google no deja disponible ninguna API para descargarte tu codigo, ... ¡Pero como va a ser así!, desde appengine, te dicen que se puede hacer, lo que no está tan claro es como hacerlo. Pues estos son los pasos para poder hacerlo: Crear un directorio vacío para poder descargar en el nuestra aplicación. Abrir la línea de comandos, y cambiarnos al directorio de google app engine: cd C:\Archivos de Programa\Google\google_appengine\ Ejecutar el siguiente comando para descar

Clases abstractas con python

¿Como se crean clases abstractas con python?. Voy a explicar cual es la forma correcta de definir una clase abstracta y heredar de ella. El procedimiento general es: Definir una clase abstracta utilizando una metaclase. Definir la subclase de la clase abstracta (sin herencia). Registrar esta última clase como subclase de la clase abstracta. Tomemos como ejemplo el siguiente código: from abc import ABCMeta, abstractmethod class AbstractFoo:     __metaclass__ = ABCMeta          @abstractmethod     def bar(self):         pass     @classmethod     def __subclasshook__(cls, C):         return NotImplemented class Foo(object):     def bar(self):         print "hola" AbstractFoo.register(Foo)  Lo primero que hacemos es importar del módulo abc la clase ABCMeta y el decorador abstractmethod . La clase ABCMeta es la metaclase que utilizamos para definir las clases abstractas, nos aporta una serie de funcionalidades. Una vez hemos asignada la metacl