2012-03-20 9 views
5

Ho ListPreference e contiene per esempio 5 opzioni e voglio salvare uno di questo valore su SharedPreferences quando l'utente lo seleziona. Come posso farlo?Come ottenere l'opzione selezionata da ListPreference?

btw. So come salvare valore in SharedPreferences, ma non so come ottenere quel valore quando l'utente seleziona uno di essi.

risposta

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

Nel file xml si fornisce la chiave SharedPreferences per l'elenco.

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

Ogni volta che l'utente seleziona la voce dalla lista viene salvato ai SharedPreferences predefinite

2

accedo mine Ti piace questa .. Si prega di vedere l'esempio seguente

Nel mio file 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> 

mia 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> 

E poi ottengo il valore selezionato come questo da qualsiasi luogo:

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