2012-03-20 25 views
5

मेरे पास ListPreference है और इसमें उदाहरण के लिए 5 विकल्प हैं और जब मैं उपयोगकर्ता इसे चुनता हूं तो मैं इस मान में से किसी एक को SharePreferences में सहेजना चाहता हूं। मैं यह कैसे कर सकता हूं?ListPreference से चयनित विकल्प कैसे प्राप्त करें?

बीटीडब्ल्यू। मुझे पता है कि साझा किए गए संदर्भों में मूल्य कैसे सहेजना है, लेकिन मुझे नहीं पता कि उस मूल्य को कैसे प्राप्त किया जाए जब उपयोगकर्ता उनमें से एक का चयन करता है।

उत्तर

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

अपनी एक्सएमएल फ़ाइल में आप अपनी सूची के लिए साझाप्रणाली कुंजी प्रदान करते हैं।

<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", "");