Persistir datos en Android al girar la pantalla

David Galisteo Cantero

Aprendamos cómo persistir datos en Android al girar la pantalla

Una aplicación que pierda los datos introducidos cuando giramos el teléfono, no ofrece una buena experiencia de usuario, por ello vamos a aprender cómo evitar este problema con unas sencillas lineas de código.

Para este caso, me creé un proyecto de prueba, en el cual tendremos una carpeta ‘layout’ para la vista del teléfono en posición vertical, y otra carpeta, que tendremos que crear, ‘layout-land’, donde se guardará la vista para el teléfono en posición horizontal.

Añadimos un simple campo ‘EditText’ para hacer pruebas…

 <EditText
       android:id="@+id/editText1"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:ems="10" >

Este EditText estará presente en las dos vistas, horizontal y vertical.

Bien, ahora, en la actividad principal, ‘MainActivity’ en mi caso, vamos a declarar una cadena de texto y un EditText:

String t;
EditText texto;

En el método ‘onCreate’, vamos a obtener la referencia para la vista del texto:

texto = (EditText) findViewById (R.id.editText1);

Siendo ‘editText1’ el id del EditText de nuestros xml.

Ahora añadímos los siguientes métodos:

    @Override
    protected void onSaveInstanceState(Bundle guardaEstado) {
          super.onSaveInstanceState(guardaEstado);
          //guardamos en la variable t el texto del campo EditText
          t = texto.getText().toString();
          //lo "guardamos" en el Bundle   
          guardaEstado.putString("text", t);   
    }
 
    @Override
    protected void onRestoreInstanceState(Bundle recuperaEstado) {
          super.onRestoreInstanceState(recuperaEstado);
          //recuperamos el String del Bundle
          t = recuperaEstado.getString("text");
          //Seteamos el valor del EditText con el valor de nuestra cadena   
          texto.setText(t);                    
    }

Con estos dos métodos sencillos conseguimos la funcionalidad que buscábamos, ahora, cuando giremos nuestra pantalla, nuestro EditText mantendrá el valor que le asignemos, y se ha conseguido sin tener que utilizar bases de datos.

Cabe destacar que estos métodos SOLO sirven para guardar tipos de datos primitivos, cadenas, enteros… Para guardar objetos u otro tipo de datos habría que utilizar técnicas que veremos en entradas posteriores.

Espero que os haya sido útil.

HackSaludos!

Publicado el 26-10-2013

Compartelo!

Deja un comentario

Comentanos

*
Ir arriba de la pagina