Actividades

esta capitulo contiene los siguientes temas:

  • Declarar una actividad

    • Inicio de una nueva actividad con un objeto de intención

    • Cambio de actividades

    • Transmisión de datos a otra actividad

    • Devolver un resultado de una actividad

  • Guardar el estado de una actividad

  • Almacenamiento de datos de actividad persistentes

  • Comprender el ciclo de vida de la actividad

Introducción

El SDK de Android es una potente herramienta para programar dispositivos móviles. Este libro, está diseñado para saltar a tareas específicas y obtener los resultados inmediatamente.

Los activities son el elemento básico de la mayoría de las aplicaciones de Android, Class proporciona la interfaz entre la aplicación y la pantalla. La mayoría de las aplicaciones de Android tienen varias activities (pero no son necesarios). La aplicación no requerirá necesariamente una actividad si no hay una interfaz de usuario.

Este capítulo explica cómo declarar y lanzar actividades dentro de una aplicación y cómo Gestionar varias actividades a la vez compartiendo datos entre ellas, solicitando resultados y llamando a una actividad dentro de otra.

_**Declarar una actividad


Las actividades, se declaran con el Archivo AndroidManifest XML. Declarar una actividad es la forma de decirle al sistema acerca de nuestra actividad Y cómo se puede solicitar. Por ejemplo, una aplicación suele indicar que al menos Una actividad debe ser visible por medio de un icono de escritorio.

¿Cómo se hace?

  1. Inicie android estudio

  2. Clic en Iniciar un nuevo proyecto de Android Studio.

  3. Introduzca un nombre de aplicación; como por ejemplo, DeclareAnActivity. Y damos en next.

  4. Elegimos la version del android y damos next

  1. se elige actividad en blanco y next

  1. Aparecera un cuadro donde nos dice Activity name MainActivity, este corresponde a la pantalla inicial de la aplicación, es libre de poner el nobre que desee.Damos en finish

Android Studio creará los archivos del proyecto. Los archivos que examinaremos son MainActivity.java (que corresponde al nombre de la actividad Mencionado en el paso 6) y AndroidManifest.xml.

El archivo MainActivity.java observado en la imagen anterior,es bastante básico. Esto es Porque se eligio: actividad en blanco (en el paso 4). Pero AndroidManifest.xml. Es donde se declara la actividad. Dentro del elemento <application> esta <activity>:

_**¿Cómo funciona?


Para declarar una actividad es una simple cuestión de declarar el elemento <activity> y especificar El nombre de la clase de actividad con el atributo android: name. Al agregar la función <activity> se esta agregando el componente a la aplicacion. Cualquier actividad (o cualquier otro componente para el caso) que no sean Declarado en el manifiesto no será incluido en la solicitud.

hay otro atributo- android: label. Este atributo indica El título, así como la etiqueta del icon que se trata de la actividad del Lanzador.

Inicio de una nueva actividad con un objeto de intención

El modelo de aplicación de Android puede ser visto como un servicio orientado, con actividades que pueden ser Componentes e intenciones, como los mensajes enviados entre ellos. Aquí, se utiliza una intención para iniciar Una actividad que muestra el registro de llamadas del usuario, pero las intenciones pueden usarse para hacer muchas cosas. Como por ejemplo enlazar a paginas u objetos exteriores de la aplicación como se mostrara en el ejemplo.

_**Preparándose


Para hacer las cosas de la forma mas sensilla, se utilizara un objeto incorporado de Android, en lugar de crear una nueva. Como requerimiento necesitamos una aplicación basica. Iniciamos un nuevo proyecto, y se llamara ActivityStarter. La cual consiste en crear un boton, y este nos enlazara a una pagina web.

_**¿como se hace?


Vamos a crear una funcion la cual mostrara la intencion y esta funcion va a ser llamada por un boton de nuestra actividad. Pasos: 1. en la clase MainActivity.java y añada la siguiente función:

  1. Abra el archivo activity_main.xml y agregue lo siguiente:

<Button

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Launch Browser"

android:id="@+id/button"

android:layout_centerVertical="true"

android:layout_centerHorizontal="true"

android:onClick="launchIntent"/>

  1. corra la aplicación en un emulador. Y precione el boton, observara que nos dirige a una url.

Para probar en un dispositivo físico, es posible que necesite instalar controladores para su dispositivo (el Los controladores son específicos para el fabricante del hardware). O permitir la opcion modo desarrollador.

Cambio de actividades

El cambio entre actividad o tambien llamadas ventanas es muy importante a la hora de desarrollar una aplicación movil .

En este capitulo vamos a ver la configuracion para el camabio entre actividades para ello:

  1. crearemos dos actividad.

    2.declarar las anteriores actividades.

    1. por ultimo crearemos un boton el cual nos servira para cambiar de actividad.

Actividad 1.

Crearemos un nuevo proyecto en android studio el cual trata llamar una actividad, android studio creara la primera actividad llamada (ActivityMain) y de igual forma declarar en el manifiesto.

_**¿Como se hace?


En android studio cuando uno crea un proyecto este automáticamente crea la primera actividad, como se puede ver la imagen .

lo que se debe hacer es crear la segunda actividad los pasos son:

1.File | New | Activity | Empty Activity

colocamos el nombre a la actividad, le colocamos SegundaActivity para tenerla en cuanta:

  1. la primera actividad vamos agregar la siguiente función:

  1. ahora buscamos el archivo activity_main.xml que se encuentra en res \ layout y Agregue el siguiente XML para crear el botón:

  1. ahora vamos a la segunda actividad y añadimos un botón a segunda actividad para cerrarlo y este nos llevara a la primera actividad.

agregamos esta función para cerrar la ventana:

public void onClickClose(View view){ finish(); }

PRUEBA Ahora ejecutamos la aplicación en el emulador o dispositivo para ver que los botones estén funcionando y mirar el cambio entre actividades.

Transmisión de datos a otra actividad

En este capítulo el objeto Intent se lo define como un objeto de mensajería. El objeto de mensajería su propósito es comunicarse con diferentes componentes de aplicación.

Para el siguiente ejercicio se mostrará como enviar información desde un primerAtivity a un SegundoActivity.

_**¿Cómo se hace?


Para ello hacemos los siguientes cambios:

  1. en el activity_primer.xml eliminamos <TextView> creado anteriormente y agregamos el siguiente elemento <EditText>:

El botón que agregamos anteriormente no cambia.

  1. ahora abrimos el primerActivity.java cambiamos el metodo onClickSwitchActivity() así:

  1. luego vamos a Activity_Segunda.xml y hacemos la modificación el elemento <TetxtView>, a este le incluimos un atributo ID así como se mira en la imagen:

  1. por ultimo editamos la SegundaActicity.java el cual busca los nuevos datos y como mostrarlos para ello:
  1. abrimos la segunda actividad 2. editamos onCreate()

_**PRUEBA


ejecutamos la aplicación en el emulador o dispositivo y nos saldrá que ingresemos cualquier texto y cuando nos movamos a la segunda actividad nos indicará el texto que ingresamos en la primera actividad.

DEVOLVER EL RESULTADO DE UNA ACTIVIDAD

Es muy bueno poder iniciar una actividad de otra, pero a veces necesitamos saber cómo funciono la actividad que llamamos para esto utilizamos el método The StartActivityForResult()

Preparándose

Para devolver el resultado de una actividad no es muy diferente de la manera de como la llamamos. Podemos utilizar los proyectos anteriores o podemos crear uno nuevo siempre y cunado tengan una segunda activad, crearemos uno y le llamaremos GettingsResults y ya estamos listos para comenzar.

Como hacerlo

Solo necesitamos unos pocos cambios para obtener resultados.

1) Lo primero es ubicarnos en la MainActivity.java y añadir:

Public static final String REQUEST_RESULT = “REQUEST_RESULT”;

2) A continuación, cambiaremos el ClickSwitchActivity () para obtener un resultado un resultado:

public void onClickSwitchActivity(View view) { EditText editText = (EditText)findViewById( R.id.editTextData); String text = editText.getText().toString(); Intent intent = new Intent(this, SecondActivity.class); intent.putExtra(Intent.EXTRA_TEXT,text); startActivityForResult(intent,1); }

3) Ahora con este método recibiremos el resultado.

protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode==RESULT_OK) { Toast.makeText(this, Integer.toString(data.getIntExtra(REQUEST_RESULT, 0)), Toast.LENGTH_LONG).show();

} }

4) Finalmente modificamos el cerrar para que guarde el valor devuelto.

public void cerrar(View view) { Intent returnIntent = new Intent(); returnIntent.putExtra(MainActivity.REQUEST_RESULT,42); setResult(RESULT_OK, returnIntent); finish(); }

Como funciona

Como podemos apreciar devolver los resultados es de cierta manera sencillo. Solamente llamamos al startActivityForResult, y para el resultado llamaremos al OnActivityResult() y con el Callback recibiremos resultados, pero tenemos que asegurarnos que la segunda actividad devuelva el resultado con Result(), en este caso solo estamos recibiendo una actividad de una valor estático.

Siempre es bueno revisar el código de resultado para revisar que el usuario no lo cancelo y comprobar que hay RESULT_OK = RESULT_CANCEL pero en nuestra segunda activad ni tenemos la opción de cancelar así que no tenemos necesidad de comprobar esto pero si el sistema pondrá RESULT_CANCEL con el null lo que hará que nuestro código lance la excepción.

También podemos utilizar el Toast, que se puede usar discretamente para y también funciona para la depuración.

Hay mas

Además del onActivityResults() para la obtención del resultado este también incluye la solicitud, que es simplemente el valor que paso por el StartActivityResult() para llamarlo usamos:

startActivityForResult(Intent intent, int requestCode);

Este puede ser usado para saber de dónde viene la petición en caso de existir varias actividades.

Ver también

  • Para obtener más información consulte actividades sobre proyectos.
  • Para más información de Toast consultar el capítulo 7.

Guardar el estado de una actividad

El mundo de los móviles se está volviendo cada vez más dinámico y los usuarios manejan tareas generalmente con pocos recursos de sistema y pueden ocurrir errores que detengan la aplicación para salvar recursos es la naturaleza de los móviles, o el mismo usuario puede cerrar la aplicación o recibir una llamada telefónica y cuando regrese la aplicación se ha cerrado completamente, para mejorar la experiencia con el usuario la aplicación debe facilitar el comienzo de la misma desde donde el usuario la dejo. Para esto el sistema Android tiene los CallBacks para notificar los cambios de estado.

Nota. Hacer que el dispositivo gire ara que se reinicia la actividad, aunque parezca tedioso esto asegura que se usen los recursos necesarios.

En este punto aprenderemos a manejar onSavelnstanceState() y onRestoreInstanceState() para guardar la aplicación para esto crearemos un contador que aumente cada vez que le damos en un botón, también tendremos un EditText y un TextView.

_**Preparándose


Crearemos un nuevo proyecto que el pondremos StateSaver pero aran falta unos widgets como EditText, Button, TextView

Algo así debe quedar

COMO HACERLO

Haremos los siguientes pasos.

1) Para poder seguir al contador crearemos una variable global al proyecto, con una clave para guardar y cargar, así que agregaremos lo siguiente al MainActivity:

static final String KEY_COUNTER = "COUNTER"; private int mCounter=0;

2) Ahora el código necesario para manejar el contador y que lo muestre en el TextView.

public void onClickCounter(View view) { mCounter++; ((TextView)findViewById(R.id.textView3)).setText(

        "Counter: " + Integer.toString\(mCounter\)\); } 

3) Para recibir las notificaciones agregamos a OnSaveInstanceState() y onRestoreInstanceState().

protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putInt(KEY_COUNTER, mCounter); }

protected void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); mCounter = savedInstanceState.getInt(KEY_COUNTER);

}

COMO FUNCIONA

Todos las aplicaciones y sus actividades sufren distintos eventos a lo largo de su vida, pero para esto tenemos nuestro código para guardar información importante antes de que sea borrada.

En el paso 3 se realiza el verdadero evento en donde el EditText() guardan los datos y onRestoreInstanceState() extrae los datos.

Pero si uno ingresa un valor en el EditText también se guarda la información, pero no hemos hecho nada para que pase esto, es porque el sistema guarda la información siempre y cuando este tenga un ID único.

HAY MAS

El método onRestoreInstanceState() no es el único donde se puede salvar datos, por ejemplo se pude hacer:

OnCreate(Bundle savedInstanceState)

Pero ambos métodos reciben la misma instancia Bundle y se puede modificar el código y no fallara, pero hay que asegurarlo que el valor de savedInstanceState no sea nulo.

if (savedInstanceState!=null) { mCounter = savedInstanceState.getInt(KEY_COUNTER); }

Ver también

  • El proyecto para la persistencia se entrará más afondo en el almacenamiento persistente.

  • Puedes mirar el capítulo 6 para más información.

Almacenamiento de datos de actividad persistentes

Para esta sección del libro se aplicara la persistencia para datos sencillos como puntuaciones altas o nombres de usuario, esta manera sencilla la ofrece SharedPreferences, anteriormente se había guardado mCounter para el estado de la sesión, para este caso lo que se hará es agregar un nuevo método que se llamara onPause() para guardar mCounter a SharedPreferences.

Se realizarán dos cambios en el MainActivity.java:

  • El primero será el método onPause() que se encargara de guardar los datos antes de que la actividad se cierre.

  • El segundo será agregar estas líneas de código al final del método onCreate() que se encargara de restaurar el contador.

**Ciclo de vida de una actividad

**

En este ciclo de vida se muestra el comportamiento de las actividades junto con las etapas de las mismas, adicional a esto el diagrama indica algunos de los métodos que pueden ser anulados y cómo podemos darnos cuenta muchos de los métodos que aparecen en este diagrama ya los hemos implementado en ejercicios anteriores.

Nueva actividad.

Ahora debemos crear un nuevo proyecto de Android Studio con la actividad en blanco lo llamaremos ActivityLifecycle, para este proyecto utilizaremos.

  1. Text view: este mostrara la información de estado, lo haremos de la siguiente manera:

  2. Crearemos métodos para todas las etapas.

  3. Abriremos activity_main.xml y vamos añadir un ID a la TextView que se genera automáticamente

  • Los demás pasos que ejecutaremos serán en MainActivity.java, empezaremos agregando la siguiente declaración.

  • Ahora modificaremos el onCreate() para guardar el TextView y con esto establecer el texto inicial, de esta manera:

  • Por ultimo lo que haremos es agregar los métodos siguientes para controlar los eventos que faltan, de esta manera:

Ahora bien, podremos ejecutar nuestra aplicación y ver como se afecta la misma con las características agregadas.

La actividad que hemos creado puede existir en tres estados los cuales son:

  • Activa: cuando la interfaz está disponible para el usuario.
  • Pausa: hasta que la nueva actividad se termine de ejecutar.
  • Detenida: cuando la nueva actividad vuelve invisible nuestra actividad.

    Adicionalmente encontramos un cuarto estado que sería DESTRUIDO.

Por ultimo como forma opcional de querer explorar un poco más estos métodos se debería implementar una línea de código adicional a onPause para saber si la actividad realmente está terminando antes de ejecutar el onDestroy, la línea de código seria la siguiente.

results matching ""

    No results matching ""