2011-11-07 12 views

उत्तर

147
SharedPreferences mySPrefs =PreferenceManager.getDefaultSharedPreferences(this); 
SharedPreferences.Editor editor = mySPrefs.edit(); 
editor.remove(String key); 
editor.apply(); 

यहां संपादक साझा संदर्भ संपादक है।

+9

इस उत्तर के लिए एक छोटा सा अतिरिक्त। एंड्रॉइड प्रलेखन से: "यदि आपको रिटर्न वैल्यू की परवाह नहीं है और आप इसे अपने एप्लिकेशन के मुख्य थ्रेड से उपयोग कर रहे हैं, तो इसके बजाय आवेदन() का उपयोग करने पर विचार करें।" –

+1

@ सिल्वर, आपने आवेदन() को वापस प्रतिबद्ध() पर क्यों दोहराया है?यह जानकर कि प्रलेखन लागू होता है() जब तक हम वापसी मूल्य के साथ काम नहीं करना चाहते हैं, और न तो प्रश्न या उत्तर उस मामले में फिट बैठता है –

7
SharedPreferences.Editor.remove(key) 
commit(); 
10

यह ध्यान रखें कि, जब तक आप प्रतिबद्ध() कॉल के रिटर्न मान के साथ कुछ कर रही पर योजना बना रहे हैं महत्वपूर्ण है, वहाँ बिल्कुल) के लिए प्रतिबद्ध (तुल्यकालिक प्रयोग करने के लिए कोई कारण नहीं अतुल्यकालिक के बजाय कहते हैं आवेदन करें() कॉल करें।

ध्यान रखें कि यदि आप इसे मुख्य/UI थ्रेड से कॉल कर रहे हैं, तो UI को प्रतिबद्ध() पूरा होने तक अवरुद्ध कर दिया गया है। आवेदन के लिए लगभग 5ms तक लगाए गए यह लगभग 100ms ऊपर ले सकते हैं। यह बहुत अधिक प्रतीत नहीं होता है, लेकिन यदि एक आवेदन के दौरान लगातार किया जाता है, तो यह निश्चित रूप से जोड़ देगा।

तो, जब तक आप कुछ इस तरह कर रही पर योजना बना रहे हैं, उम्मीद है कि एक अलग थ्रेड पर:

editor.remove(String key); 
boolean success = editor.commit(); 
if (!success) { 
    // do something 
} 

इसके बजाय आप यह कर किया जाना चाहिए:

editor.remove(String key); 
editor.apply(); 
0

सूचना

बस sharedpref कक्षा को Map पर बढ़ाया गया है, यही कारण है किहैविधि

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
SharedPreferences.Editor editor = prefs.edit(); 
editor.remove(String key); 
editor.apply(); 

यहाँ संपादक SharedPreferences संपादक है।

2

यहां इस मुद्दे का सामना करने का तरीका बताया गया है।

सबसे पहले मैं

SharedPreferences mobilePreference; 

तो मैं के रूप में

mobilePreference = this.getSharedPreferences("in.bhartisoftwares.amit.allamitappsthree", Context.MODE_PRIVATE); 

यहाँ इस sharedPreference इस्तेमाल किया रूप SharedPreference का एक उदाहरण बनाया "in.bhartisoftwares.amit.allamitappsthree" मेरे पैकेज का नाम है और मैं उपयोग कर रहा हूँ Context.MODE_PRIVATE, क्योंकि मैं केवल इस पैकेज नाम के लिए इस साझा वरीयता में हेरफेर करना चाहता हूं।

mobilePreference.edit().remove("mobileString").commit(); 

नीचे पूर्ण रूप में कोड देखें::

तब मैं चयनित sharedPreference (मेरी sharedPreference के प्रमुख mobileString है) के रूप में इस प्रकार को हटाने हूँ

SharedPreferences mobilePreference = this.getSharedPreferences("in.bhartisoftwares.amit.allamitappsthree", Context.MODE_PRIVATE); 
    mobilePreference.edit().remove("mobileString").commit(); 
2

यह बहुत सरल है:

private SharedPreferences sharedPreferences() { 
    return PreferenceManager.getDefaultSharedPreferences(mContext); 
} 

public void clearSharedPreferences() { 
    sharedPreferences() 
      .edit() 
      .remove(SOME_KEY_1) 
      .remove(SOME_KEY_2) 
      .remove(SOME_KEY_3) 
      .apply(); 
} 
संबंधित मुद्दे