2009-02-16 10 views

Respuesta

117

Asumo por preferencias que se refiere a las preferencias de su aplicación y no a la configuración del teléfono Android.

para almacenar las preferencias entre las corridas de que las aplicaciones que necesita para hacer lo siguiente

  1. Crear un SharedPreferences objeto

    SharedPreferences settings = getSharedPreferences(String n, MODE_PRIVATE); 
    

    Cadena N identifica sus preferencias y el segundo argumento es el modo que se accederá

  2. Crear una instancia de un objeto Editor

    SharedPreferences.Editor editor = settings.edit(); 
    

    Nota: no intente settings.editor.edit(), esto no va a hacer que un objeto persistente y el código de abajo no funcionarán

  3. Escriba sus preferencias a la memoria intermedia

    editor.put...(String, value) 
    

    hay numerosas funciones de venta, putString, putBoolean, etc. la cadena es la clave ("versión", "buena racha") y el valor es el valor ("1.5.2", true)

  4. vaciar el búfer

    editor.commit(); 
    

    Esto escribe en realidad se pone a las preferencias. Si su aplicación falla antes de esta línea, las preferencias no se escribirán. También hay un error documentado: se supone que commit() devuelve un valor booleano que indica éxito o falla. La última vez que lo revisé siempre devolvía falso.

Estas preferencias por almacenan en el teléfono y sólo se podrá acceder a la aplicación.

más documentación here

+43

En realidad se puede utilizar una sola línea: prefs.edit() putInt (clave, valor)..cometer(); – tomash

+2

¿Alguna idea de cómo difiere esto de PreferenceActivity y quizás tengas una referencia a un ejemplo de PreferenceActivity? –

+1

Si no le importa el valor devuelto, los documentos dicen que, desde el nivel 9 de API, puede llamar a 'apply();' en lugar de a 'commit();' – Twinone

8

He intentado esto, pero no funcionó:

SharedPreferences settings = getSharedPreferences(String n, MODE_PRIVATE); 

probar este lugar:

SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this); 
+0

Sería mucho más útil decir QUÉ salió mal, en lugar de "no funcionó". (No compiló? Se bloqueó cuando lo ejecutó? La lista de preferencias devuelta estaba vacía?) Sin embargo, +1 para un buen consejo: Mirando mi aplicación, su línea es lo que se utiliza para acceder a la configuración de MainActivity ; la línea de la respuesta original se puede usar opcionalmente para acceder a las configuraciones desde el código en un PreferenceFragment (un fragmento que contiene widgets que describen XML para mostrar/alterar las preferencias). – ToolmakerSteve

2

Usted puede ahorrar algo en los SharedPreferences mediante el uso de código de abajo

public static void save(String valueKey, String value) { 
    SharedPreferences prefs = PreferenceManager 
      .getDefaultSharedPreferences(context); 
    SharedPreferences.Editor edit = prefs.edit(); 
    edit.putString(valueKey, value); 
    edit.commit(); 
    } 

Para leer preferencias:

public static String read(String valueKey, String valueDefault) { 
    SharedPreferences prefs = PreferenceManager 
      .getDefaultSharedPreferences(context); 
    return prefs.getString(valueKey, valueDefault); 
} 
Cuestiones relacionadas