2012-03-06 15 views
7

मेरे पास मेरी xml निर्देशिका में user_preferences.xml है। एक प्राथमिकताएं सक्रियता उपयोगकर्ता प्राथमिकता गतिविधि बनाने के लिए इस फ़ाइल का उपयोग करती है .. और यह काम करता है। जो भी उपयोगकर्ता यहां चुनता है वह जारी रहता है। लेकिन मैं उपयोगकर्ता द्वारा चुने गए मान को पुनः प्राप्त करने में असमर्थ हूं।वरीयताएँ .getString ("कुंजी", "DEFAULT") हमेशा "DEFAULT" क्यों लौटाती है?

जब मैं का उपयोग करें ...

SharedPreferences preferences = getSharedPreferences("user_preferences.xml", 0);  
    String mapTypeString = preferences.getString("map_type_pref_key", "DEFAULT"); 

... mapTypeString हमेशा होता है "DEFAULT"।

ऐसा लगता है कि जब मैं अपने साझा किए गए संदर्भ ऑब्जेक्ट को तुरंत चालू करता हूं तो मेरे user_preferences.xml नहीं मिलता है। लेकिन, प्राथमिकताएं सक्रियता इसे पाती हैं। तो मुझे क्या याद आ रही है?

बहुत धन्यवाद!

+0

क्या आप वाकई वही प्राथमिकता फ़ाइल पढ़ रहे हैं? – SERPRO

+0

मेरी प्राथमिकता में ऑनक्रेट() में, मैं \t \t addPreferencesFromResource (R.xml.user_preferences) का उपयोग करता हूं; तो जब मैं SharePreferences ऑब्जेक्ट बनाता हूं तो शायद मुझे फ़ाइल को अलग-अलग इंगित करने की आवश्यकता है? – Hap

+0

@SERPRO कोई समस्या है क्योंकि xml xml निर्देशिका के अंदर है? – Hap

उत्तर

9
करने के लिए अपने कोड बदलने

:

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); 
String mapTypeString = preferences.getString("map_type_pref_key", "DEFAULT"); 
+2

यह काम करता है, धन्यवाद। लेकिन मैं अभी भी थोड़ा उलझन में हूं ... मैं एक और एक्सएमएल का उपयोग करता हूं जो एक ही गतिविधि में वरीयताओं को स्टोर करता है। GetDefaultSharedPreferences मुझे user_preferences.xml क्यों देता है और अन्य नहीं, settings.xml? – Hap

0

आप इसे संपादन के बाद वरीयताओं प्रतिबद्ध करने के लिए किया है।

SharedPreferences preferences = getSharedPreferences("user_preferences.xml", 0); 
SharedPreferences.Editor editor = preferences.edit(); 
editor.putString("map_type_pref_key", "blah_blah"); 
editor.commit(); 
+2

"लेकिन मैं उपयोगकर्ता द्वारा चुने गए मान को पुनः प्राप्त करने में असमर्थ हूं।" वह हटाना चाहता है, बदलने के लिए नहीं। –