2012-03-20 32 views
5

ListPreference'im var ve örneğin 5 seçenek içeriyor ve bu değerlerden birini kullanıcı seçtiğinde SharedPreferences'a kaydetmek istiyorum. Nasıl yapabilirim?ListPreference'dan nasıl seçtiniz?

btw. SharedPreferences'a değeri nasıl kaydedeceğimi biliyorum, ancak kullanıcı bunlardan birini seçtiğinde bu değeri nasıl alacağımı bilmiyorum.

cevap

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

xml dosyanızda listeniz için SharedPreferences anahtarı sağlarsınız.

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

her kullanıcı varsayılan SharedPreferences

2

böyle madeni erişmek için kaydedilir listeden öğeyi seçer .. Benim preference.xml dosyasında

aşağıdaki örneğe bakın:

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

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

Sonra her yerden böyle seçilen değeri elde:

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