2012-03-20 13 views
5

Tengo ListPreference y contiene, por ejemplo, 5 opciones y deseo guardar uno de este valor en SharedPreferences cuando el usuario lo seleccione. ¿Cómo puedo hacerlo?¿Cómo obtener la opción seleccionada de ListPreference?

btw. Sé cómo ahorrar valor en SharedPreferences, pero no sé cómo obtener ese valor cuando el usuario selecciona uno de ellos.

Respuesta

8
OnPreferenceChangeListener listener = new OnPreferenceChangeListener() {  
    @Override 
    public boolean onPreferenceChange(Preference preference, Object newValue) { 
     // newValue is the value you choose 
     return true; 
    } 
}; 

listPreference.setOnPreferenceChangeListener(listener); 
1

En el archivo xml, proporciona la clave SharedPreferences para su lista.

<ListPreference 
android:key="SHARED_PREFS_KEY" 
... 
/> 

Cada vez que el usuario selecciona el elemento de la lista se guarda en los SharedPreferences defecto

2

puedo acceder a la mina como esta .. Por favor, véase el siguiente ejemplo

En mi archivo preference.xml:

<ListPreference 
      android:key="SQS_ENDPOINT" 
      android:dialogTitle="Choose an option please" 
      android:entries="@array/sqsItems" 
      android:entryValues="@array/sqsValues" 
      android:title="SQS Endpoints" > 
     </ListPreference> 

mi String.xml:

<string-array name="sqsItems"> 
     <item>US East (N. Virginia)</item> 
     <item>Asia Pacific (Singapore)</item> 
     <item>Asia Pacific (Tokyo)</item> 
    </string-array> 
    <string-array name="sqsValues"> 
     <item>sqs.us-east-1.amazonaws.com</item> 
     <item>sqs.ap-southeast-1.amazonaws.com</item> 
     <item>sqs.ap-northeast-1.amazonaws.com</item> 
    </string-array> 

Y cuando me siento el valor seleccionado como éste desde cualquier lugar:

SharedPreferences pref = PreferenceManager 
       .getDefaultSharedPreferences(context); 
     String END_POINT = pref.getString("SQS_ENDPOINT", ""); 
Cuestiones relacionadas