Búsqueda personalizada

Blog personal para aprender a programar en Android desde cero.

Mostrando entradas con la etiqueta SharedPreferences. Mostrar todas las entradas
Mostrando entradas con la etiqueta SharedPreferences. Mostrar todas las entradas

viernes, 12 de marzo de 2010

Guardar preferencias

Cuando queremos que nuestra aplicación tenga unas preferencias o propiedades, tanto fijas o variables, y que se mantengan cada vez que la ejecutamos, podemos almacenar estos valores de varias formas ( Preferences, Files, Databases, y Network)

Quizás la forma más fácil y ligera es con Preferences, que es apropiada para guardar datos de tipo primitivo. La manera de guardar y recoger propiedades es del tipo clave-valor.

Incluso, es posible compartir las preferencias de nuestra aplicación con otras aplicaciones. Aunque si solamente tenemos una aplicación, o no queremos que las preferencias sean compartidas, todavía es más sencillo (el ejemplo que voy a explicar es de este tipo).

El objeto que contiene las propiedades clave-valor es del tipo SharedPreferences, que obtenemos con la llamada Activity.getPreferences(int mode).

Para guardar los cambios de nuestras propiedades usaremos un editor SharedPreferences.Editor, pero para leerlas lo haremos directamente del SharedPreferences.

Vamos con el código de ejemplo (el siguiente código no compila, es solo un trozo de código),

import android.app.Activity;
import android.content.SharedPreferences;

        public class MyActivity extends Activity {

. . .      
// En la primera llamada de la Activity recuperamos el valor de una propiedad llamada "welcomeMessage"
@Override
protected void onCreate(Bundle state){
super.onCreate(state);


                                 // Creamos el objeto SharedPreferences 
SharedPreferences settings = getSharedPreferences(MODE_PRIVATE);
// defaultMessage será el valor por defecto de nuestra propiedad
String defaultMessage = "Hola SBC";
                                // recuperamos el valor de nuestra propiedad 'welcomeMessage'
String welcomeMessage = settings.getString("welcomeMessage", defaultMessage );
myObject.setWelcomeMessage(welcomeMessage);
}


// Guardaremos las opciones en este evento, pero  podríamos hacerlo en cualquier momento
@Override
protected void onStop(){
super.onStop();

// Creamos el objecto SharedPreferences
SharedPreferences settings = getSharedPreferences(MODE_PRIVATE);
                                 // Recuperamos el editor para poder guardar
SharedPreferences.Editor editor = settings.edit();
// Recuperamos el mensaje que hemos introducido
EditText tv = (EditText) findViewById(R.id.message);
String message = tv.toString();
                                // Con el editor le asignamos un valor a nuestra propiedad 'welcomeMessage'
editor.putString("welcomeMessage", message);
      
// El commit IMPORTANTE sobre el editor
editor.commit();
}
}


Como se puede observar es bastante sencillo. Para poder compartir las preferencias con otras aplicaciones es muy similar, pero en vez de llamar a Activity.getPreferences(int mode), deberemos llamar a Context.getSharedPrefences(String my_preferences, int mode), donde mode my_preferences es el nombre identificativo.