domingo, 9 de marzo de 2014

Android - Primeros Pasos - Moviéndonos entre pantallas

Cada pantalla está asociada a una Actividad, así pues cada vez que creemos una nueva pantalla debemos crear una nueva actividad, esto lo podemos hacer a través del asistente de eclipse.

Cuando se crea una actividad en nuestro proyecto se llevan a cabo las siguientes modificaciones:

  • Se crea una clase java asociada a la actividad.
  • Se crea el correspondiente archivo de definición layout en res/layout.
  • Se añade el nombre de la pantalla en el archivo res/values/strings.xml.
  • Se modifica el archivo AndroidManifest.xml quedando registrada la nueva actividad.

En el manifiesto aparecerá algo similar a lo siguiente:


         <activity
            android:name="com.ljlg.programandoblog.Nueva"
            android:label="@string/title_activity_nueva"
            android:parentActivityName="com.ljlg.programandoblog.MainActivity" >
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.ljlg.programandoblog.MainActivity" />
        </activity>


Una vez que tenemos nuestra nueva actividad definidad, para cargarla usaremos la clase Intents. Esta clase nos proporciona un mecanismo para invocar componentes.

Ya hemos visto como añadir acciones a los botones. Así pues vamos a añadir la carga de una nueva pantalla al pulsar un botón. Para ello vamos a añadir el siguiente código al listener asociado al botón.

        button.setOnClickListener(new OnClickListener() {          
            @Override
            public void onClick(View v) {               
                Intent intent = new Intent(v.getContext(), SegundaActivity.class);
                startActivity(intent);
            }
        });

Con esto se nos cargará la nueva pantalla al pulsar sobre el botón.
Ahora vamos a añadir en la nueva actividad un botón para volver a la pantalla desde la que se realizó la llamada. Para ello el código de la clase asociada a nuestra nueva actividad será el siguiente:


package com.ljlg.programandoblog;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class SegundaActivity extends Activity {

    Button button;
   
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_segunda);
        addListenerButtonVolver();
    }

    private void addListenerButtonVolver() {               button = (Button) findViewById(R.id.button1);              
        button.setOnClickListener(new OnClickListener() {           
            @Override
            public void onClick(View v) {               
                finish();                              
            }
        });       
    }   
}

Como vemos tan sólo es necesario añadir al listener del botón la llamada a la función finish().

2 comentarios:

  1. hola, cuando creo un proyecto de app android no me crea nada en la carpeta res/layout. ayuda por favor

    ResponderEliminar
    Respuestas
    1. Si vas al primer artículo que tengo puesto sobre programación en Android (Android - Primeros Pasos - Nuestra primera aplicación), veras que a la hora de crear el proyecto en las imágenes 3 y 5 aparece un check con la opción "Create Activity" que debe estar marcado para crear una actividad por defecto.

      Al crearse la actividad debe aparecer el fuente en java y un archivo .xml en layout.

      En cualquier caso si quieres siempre puedes añadir una nueva actividad a un proyecto ya existente, para ello pulsas CTRL + N y aparece una ventana de selección donde puedes en la carpeta Android debes seleccionar "Android Activity". En caso de que estes creando la pantalla principal además tienes que marcar la opción "Launcher Activity" en la tercera pantalla del asistente.

      Eliminar