2012-03-20 18 views
5

Mam ListPreference i zawiera na przykład 5 opcji i chcę zapisać jedną z tych wartości do SharedPreferences, gdy użytkownik wybiera go. Jak mogę to zrobić?Jak uzyskać wybraną opcję z ListPreference?

btw. Wiem, jak zapisać wartość w SharedPreferences, ale nie wiem, jak uzyskać tę wartość, gdy użytkownik wybierze jedną z nich.

Odpowiedz

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

W swoim pliku xml podajesz klucz SharedPreferences dla swojej listy.

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

Każdy użytkownik wybiera czas element z listy jest zapisany do domyślnych SharedPreferences

2

dostęp kopalni tak .. Proszę patrz poniższy przykład

W moim pliku 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> 

mój 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> 

A następnie otrzymuję wybraną wartość w następujący sposób:

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