2009-02-16 11 views
38

में एक वरीयता कैसे सेट करूं मेरे पास एक एंड्रॉइड एप्लिकेशन है जिसमें मेरी एक प्राथमिकता xml फ़ाइल में है, जो ठीक काम करती है। अब मैं पूरी वरीयता स्क्रीन को प्रदर्शित करने के बजाय कोड का उपयोग करके वरीयताओं में से एक सेट करना चाहता हूं, मैं इसे करने के बारे में कैसे जाउंगा?एंड्रॉइड - मैं कोड

उत्तर

117

मैं वरीयताओं से मानता हूं कि आप अपने एप्लिकेशन की वरीयताओं का जिक्र कर रहे हैं, न कि एंड्रॉइड फोन सेटिंग्स।

आप आवेदन के रन के बीच प्राथमिकताएं करने के लिए आप निम्न

  1. करने के लिए एक SharedPreferences आपत्ति

    SharedPreferences settings = getSharedPreferences(String n, MODE_PRIVATE); 
    

    स्ट्रिंग n अपनी प्राथमिकताएँ को दिखाता है और दूसरा तर्क विधा है बनाएं जरूरत है वे

  2. एक संपादक ऑब्जेक्ट को तत्काल करें

    SharedPreferences.Editor editor = settings.edit(); 
    

    नोट: settings.editor.edit() की कोशिश नहीं करते हैं, यह एक लगातार वस्तु और नीचे दिए गए कोड

  3. काम नहीं करेगा बफर करने के लिए अपनी प्राथमिकताएँ लिखें नहीं होगा

    editor.put...(String, value) 
    

    रहे हैं कई पुट समारोह, putString, putBoolean, आदि स्ट्रिंग कुंजी ("संस्करण", "अच्छा रन") है और मूल्य मूल्य है ("1.5.2", true)

  4. फ्लश बफर

    editor.commit(); 
    

    यह वास्तव में आप वरीयताओं के लिए रखा लिखता है। यदि आपका ऐप इस लाइन से पहले दुर्घटनाग्रस्त हो जाता है तो प्राथमिकताएं लिखी नहीं जाएंगी। एक दस्तावेजी बग भी है: प्रतिबद्ध() को सफलता या विफलता का संकेत देने वाले बूलियन को वापस करना होता है। आखिरकार मैंने जांच की कि यह हमेशा झूठी लौट आती है।

ये प्राथमिकताएं फ़ोन पर संग्रहीत द्वारा होगा और केवल अपने आवेदन के लिए सुलभ हो जाएगा।

SharedPreferences settings = getSharedPreferences(String n, MODE_PRIVATE); 

ऐसा करें::

SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this); 
+43

आप वास्तव में एक लाइनर का उपयोग कर सकते हैं।प्रतिबद्ध(); – tomash

+2

कोई विचार यह कैसे वरीयता सक्रियता से अलग है और क्या आपके पास वरीयता सक्रियता के उदाहरण का संदर्भ हो सकता है? –

+1

यदि आपको रिटर्न वैल्यू की परवाह नहीं है, तो दस्तावेज़ कहते हैं कि एपीआई लेवल 9 के बाद से आप 'प्रतिबद्ध(); ' – Twinone

8

मैं इस कोशिश की, लेकिन काम नहीं किया है

public static void save(String valueKey, String value) { 
    SharedPreferences prefs = PreferenceManager 
      .getDefaultSharedPreferences(context); 
    SharedPreferences.Editor edit = prefs.edit(); 
    edit.putString(valueKey, value); 
    edit.commit(); 
    } 

वरीयताओं पढ़ने के लिए: prefs.edit() putInt (कुंजी, मूल्य):।

public static String read(String valueKey, String valueDefault) { 
    SharedPreferences prefs = PreferenceManager 
      .getDefaultSharedPreferences(context); 
    return prefs.getString(valueKey, valueDefault); 
} 
+0

यह कहने के लिए और अधिक उपयोगी होगा कि "काम नहीं किया" के बजाय, क्या गलत हुआ। (यह संकलित नहीं हुआ था? जब आप इसे चलाते थे तो यह दुर्घटनाग्रस्त हो गया था? वरीयताओं की लौटाई गई सूची खाली थी?) फिर भी, एक अच्छी युक्ति के लिए +1: मेरा ऐप देखकर, आपकी लाइन मुख्य क्रिया से सेटिंग्स तक पहुंचने के लिए उपयोग की जाती है ; मूल उत्तर की रेखा वैकल्पिक रूप से वरीयता फ़्रेगमेंट में कोड से सेटिंग्स तक पहुंचने के लिए उपयोग की जा सकती है (एक खंड जिसमें एक्सएमएल वर्णों को प्रदर्शित करने/प्राथमिकताओं को बदलने के लिए विगेट्स का वर्णन करता है।) – ToolmakerSteve

2

आप नीचे दिए गए कोड का उपयोग करके SharedPreferences में कुछ बचा सकता है

अधिक प्रलेखन here

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