Persistir datos en Android al girar la pantalla
Anuncio:
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…
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!