2012-12-07 16 views
7

के डिफ़ॉल्ट मानों को रीसेट करें मैं सेटिंग्स स्क्रीन के लिए CheckBoxPreference का उपयोग कर रहा हूं। एक्सएमएल है:वरीयता

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > 
    <CheckBoxPreference android:key="includeAddress" 
        android:title="Include Address" 
        android:summary="" 
        android:defaultValue="true" /> 
    <CheckBoxPreference android:key="rememberName" 
        android:title="Remeber Name" 
        android:summary="" 
        android:defaultValue="false" /> 
</PreferenceScreen> 

मैं आवेदन में मूल्यों को बदलता हूं। एक बार उपयोगकर्ता लॉग आउट हो जाने पर, इसे xml में परिभाषित डिफ़ॉल्ट मानों पर सेट किया जाना चाहिए। लेकिन, यह काम नहीं लग रहा है। वे उन मूल्यों को रखते हैं जिन्हें मैंने आखिरी चुना था।

एंड्रॉयड डॉक्स पढ़ा है, मैं इस पाया:

PreferenceManager.setDefaultValues(getApplicationContext(), R.xml.preference_settings, true); 

लेकिन यह शायद ही काम करता है! साझा किए गए संदर्भों के साथ दूसरे तरीके से प्रयास किया।

SharedPreferences preferences = getParent().getSharedPreferences("preference_settings", MODE_PRIVATE); 
SharedPreferences.Editor editor = preferences.edit(); 
editor.clear(); 
editor.commit(); 

यह या तो काम नहीं करता!

क्या मुझे कुछ याद आ रही है? मैं एक्सएमएल में परिभाषित अपने डिफ़ॉल्ट मानों में वरीयताओं को कैसे सेट कर सकता हूं?

अग्रिम धन्यवाद!

उत्तर

6

साझा वरीयताओं काम करना चाहिए, लेकिन आप डिफ़ॉल्ट साझा वरीयताओं का उपयोग करना चाहिए ..

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); 
SharedPreferences.Editor editor = preferences.edit(); 
editor.clear(); 
editor.commit(); 

फ़ाइल नाम का उपयोग साझा वरीयताओं पाने के लिए, एंड्रॉयड इस नाम (संभवतः अपनी परियोजना के पैकेज के नाम के आधार पर बनाता है ?)। आप निम्न कोड को सेटिंग्स एक्टिविटी ऑनक्रेट में डालकर प्राप्त कर सकते हैं और देख सकते हैं कि प्राथमिकताएं क्या हैं।

String preferencesName = this.getPreferenceManager().getSharedPreferencesName(); 

स्ट्रिंग "com.example.projectname_preferences" जैसी कुछ होनी चाहिए। हार्ड कोड जो कहीं भी आपके प्रोजेक्ट में है, और इसे प्राप्त करने के लिए पास किया गया है शेरपेरेंस() और आपको जाने के लिए अच्छा होना चाहिए।

के रूप में:

PreferenceManager.getDefaultSharedPreferences(this); 

एक प्राथमिकताएं फ़ाइल है कि पूरे आवेदन पैकेज के लिए वैश्विक है के लिए एक पहुँच प्रदान करेगा; कोई भी गतिविधि वरीयताओं तक पहुंच सकती है (internaly, प्राथमिकताओं वाले xml फ़ाइल को your.application.package_preferences.xml नाम दिया जाएगा)।

getParent().getSharedPreferences("preference_settings", MODE_PRIVATE); 

केवल contextInstance वर्ग के लिए वरीयताओं को प्रदान करेगा: संदर्भ की क्लास इन प्राथमिकताओं को एक्सेस कर सकते हैं की केवल उदाहरणों (कहा अपने पैकेज अभी भी your.application.package है और आप your.application.package.SecondActivity में हैं, internaly प्राथमिकताएं फ़ाइल SecondActivity.xml है)।

+0

मैंने अलग-अलग xml फ़ाइल को res/xml फ़ोल्डर में परिभाषित किया है और addPreferencesFromResource (R.xml.preference_settings) का उपयोग करके जोड़ा गया है; Prefs कक्षा में। मेरे पास एक और कक्षा है, लॉगआउट, जहां मैं डिफ़ॉल्ट मान सेट करने का प्रयास करता हूं। – Renjith

+0

ने मेरा उत्तर अपडेट किया – Nermeen

+0

आपने इसे नीचे खटखटाया, ब्रावो! धन्यवाद! – Renjith

संबंधित मुद्दे