2012-03-20 65 views
5

我有ListPreference,它包含例如5個選項,我想在用戶選擇時將此值之一保存到SharedPreferences。我該怎麼做?如何從ListPreference中選擇選項?

btw。我知道如何將值保存到SharedPreferences,但我不知道如何在用戶選擇其中一個時獲取該值。

回答

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文件中,您爲列表提供了SharedPreferences項。

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

每次用戶從列表中選擇項目被保存到默認SharedPreferences

2

我訪問我的這樣的..請參見下面的例子

在我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> 

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

然後我得到的價值選擇這樣從任何地方:

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