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.