2012-03-20 67 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", ""); 
相关问题