
मोबाइल एप्लिकेशन विकसित करते समय, अक्सर एप्लिकेशन सेटिंग्स (उपयोगकर्ता-चयनित रंग थीम, एप्लिकेशन एक्सेस पासवर्ड, सर्वर सिंक्रनाइज़ेशन सेटिंग्स, आदि) को स्टोर करने की आवश्यकता होती है। चूंकि इस तरह के कार्य काफी बार उठते हैं, Google ने डेवलपर्स का ध्यान रखा और इस कार्यक्षमता के त्वरित और आसान कार्यान्वयन के लिए एक तंत्र बनाया। यह तंत्र एप्लिकेशन सेटिंग्स के साथ विभिन्न जोड़तोड़ बनाने, सहेजने, प्रदर्शित करने और प्रदर्शन करने में आसान बनाता है। इसके अलावा, यह आपको स्वचालित रूप से उपयोगकर्ता इंटरफ़ेस बनाने की अनुमति देता है। सेटिंग पैरामीटर के प्रकार का वर्णन करते समय, उपयोगकर्ता इंटरफ़ेस का हिस्सा कोड लिखे बिना पैरामीटर (बुलियन - चेकबॉक्स, स्ट्रिंग - इनपुट फ़ील्ड, ...) के प्रकार के आधार पर स्वचालित रूप से उत्पन्न होता है। तेज विकास के लिए अच्छा लगता है, है ना?
एप्लिकेशन सेटिंग तंत्र को कार्यान्वित करने का पहला चरण है, आपके एप्लिकेशन की स्क्रीन गतिविधि को
वरीयताऐक्विटी क्लास से इनहेरिट करना। यह वर्ग
ListActivity वर्ग से
विरासत में
मिला है।
और आपको XML संसाधन फ़ाइल में बताए अनुसार एक यूजर इंटरफेस बनाने की अनुमति देता है। इतना ही नहीं, यह वर्ग आपको स्वचालित रूप से आपके लिए
साझा किए गए
साझाकरण में सेटिंग्स सहेजने की अनुमति देता है।
SharedPreferences - एक इंटरफ़ेस जो आपको अपनी
गतिविधि से
GetSaredPreferences विधि (
Android आवश्यक: अनुप्रयोग प्राथमिकताएं ) के बारे में कॉल करके मैन्युअल रूप से एप्लिकेशन सेटिंग डेटा तक पहुंचने और हेरफेर करने की अनुमति देता है। हमारे वर्ग को एक साथ लिंक करने के लिए वरीयता और विरासत मापदंडों का वर्णन करने वाली XML फ़ाइल विरासत में मिली है,
addPreferencesFromResource विधि का
उपयोग किया जाता है :
- ...
- @Override
- सार्वजनिक शून्य onCreate ( बंडल सहेजा गया
- सुपर । onCreate ( saveInstanceState ) ;
- addPreferencesFromResource ( R. xml प्राथमिकताएँ ) ;
- }
- ...
अब आपको एक
रेस / xml / वरीयताओं को बनाने की जरूरत है।
xml फ़ाइल जो कि एप्लिकेशन कॉन्फ़िगरेशन मापदंडों की हमारी सूची का विवरण है और हमारी
प्राथमिकता द्वारा उठाया जाएगा। इस XML फ़ाइल में कॉन्फ़िगरेशन मापदंडों के प्रकारों का वर्णन करने के लिए एक विशिष्ट प्रारूप है।
वरीयता वर्ग से सभी प्रकार प्राप्त होते हैं, जो उपयोगकर्ता इंटरफ़ेस की आधार इकाई है और एक
दृश्य उत्पन्न करता है जो बाद में उपयोगकर्ता इंटरफ़ेस पर सही स्थान पर दिखाई देता है और एक
साझाकरण ऑब्जेक्ट के साथ जुड़ा होगा जिसे पुनर्प्राप्त और बचाया जा सकता है। आमतौर पर उपयोग किए जाने वाले उपवर्गों पर विचार करें जो कॉन्फ़िगरेशन मापदंडों के प्रकारों का वर्णन करने के लिए उपयोग किए जाते हैं:
- CheckBoxPreference : चेकबॉक्स, प्रकार बूलियन के मापदंडों का प्रतिनिधित्व करता है।
- रिंग टोनप्रेशन : आपको डिवाइस पर उपलब्ध उन लोगों से रिंगटोन का चयन करने की अनुमति देता है। चयनित रिंगटोन फ़ाइल का URI एक स्ट्रिंग के रूप में प्रस्तुत किया जाएगा।
- EditTextPreference : एक टेक्स्ट इनपुट स्ट्रिंग जो टाइप स्ट्रिंग के मापदंडों का प्रतिनिधित्व करती है।
- ListPreference : संवाद के रूप में संभावित पैरामीटर मानों की एक सूची दिखाता है, स्ट्रिंग के प्रकारों का प्रतिनिधित्व करता है।
यह भी ध्यान दिया जाना चाहिए कि अलग-अलग मापदंडों को
वरीयता श्रेणी का उपयोग करके श्रेणियों में वर्गीकृत किया जा सकता है, जो कि वस्तुओं को वर्गीकृत करता है और एक निष्क्रिय समूह हेडर प्रदर्शित करता है।
अब हम वर्णन करते हैं कि हम अपने एक्सएमएल विवरण में क्या देखना चाहते हैं। हमारी दो श्रेणियां होंगी। सबसे पहले, हम एक
CheckBoxPreference को जगह देंगे जो हमारे काल्पनिक एप्लिकेशन और
ListPreference के डेटा सिंक्रनाइज़ेशन को सक्रिय / निष्क्रिय करेगा जिसमें हम डेटा सिंक्रनाइज़ेशन की आवृत्ति सेट करेंगे। जैसा कि आप शायद पहले से ही देखते हैं, इन दो मापदंडों के बीच एक संबंध है, यदि पहले का चयन नहीं किया गया है, तो दूसरे को निष्क्रिय करने की आवश्यकता है। यह
एंड्रॉइड का उपयोग करके हासिल किया गया है
: निर्भरता विशेषता। दूसरी श्रेणी में हम
EditTextPreference को जगह देंगे जिसके साथ हम स्वागत पाठ सेट करेंगे। XML के रूप में यह सब कल्पना करें:
- <? xml संस्करण = "1.0" एन्कोडिंग = "utf-8" ?>
- < वरीयतास्क्रीन xmlns: android = " schemas.android.com/apk/res/android" >
- <PreferenceCategory
- Android: शीर्षक = "प्रथम श्रेणी"
- Android: कुंजी = "first_category" >
- <CheckBoxPreference
- Android: key = "perform_updates"
- Android: सारांश = "डेटा अपडेट सक्षम या अक्षम करें"
- Android: शीर्षक = "अपडेट सक्षम करें"
- Android: defaultValue = "सच"
- />
- <ListPreference
- Android: key = "updates_interval"
- Android: शीर्षक = "अपडेट अंतराल"
- android: सारांश = "परिभाषित करें कि कितनी बार अपडेट किया जाएगा"
- Android: defaultValue = "1000"
- Android: प्रविष्टियां = "@ सरणी / अपडेटइंटरवल"
- Android: entryValues = "@ array / updateIntervalValues"
- Android: निर्भरता = "perform_updates"
- />
- </ वरीयता सूची >
- <PreferenceCategory
- Android: शीर्षक = "द्वितीय श्रेणी"
- Android: कुंजी = "second_category" >
- <EditTextPreference
- Android: कुंजी = "welcome_message"
- Android: शीर्षक = "स्वागत संदेश"
- Android: सारांश = "दिखाए जाने वाले स्वागत संदेश को परिभाषित करें"
- Android: डायलॉगटाइट = "स्वागत संदेश"
- Android: DialMessage = "संदेश प्रदान करें"
- Android: defaultValue = "डिफ़ॉल्ट स्वागत संदेश" />
- </ वरीयता सूची >
- </ वरीयतास्क्रीन >
ध्यान दें कि
ListPreference के लिए हमने
एंड्रॉइड निर्दिष्ट किया
: प्रविष्टियां विशेषता जो सूची के संभावित मूल्यों के भंडारण स्थान को इंगित करती है। ये मान XML फ़ाइल
रेस / मान / arrays.xml में संग्रहीत किए जाते हैं। मान "updateInterval" और "updateIntervalValue" इस फ़ाइल में संग्रहीत हैं। वास्तव में, ये सिर्फ की-वैल्यू पेयर हैं, पहली एरे में कीज़ स्टोर की जाती हैं, और दूसरे में वैल्यूज़ होती हैं:
- <? xml संस्करण = "1.0" एन्कोडिंग = "utf-8" ?>
- <संसाधन >
- <string-array name = "updateInterval" >
- <आइटम का नाम = "1000" > हर 1 सेकंड </ आइटम >
- <आइटम का नाम = "5000" > हर 5 सेकंड </ आइटम >
- <आइटम का नाम = "30000" > हर 30 सेकंड </ आइटम >
- <आइटम का नाम = "60000" > हर 1 मिनट </ आइटम >
- <आइटम का नाम = "300000" > हर 5 मिनट </ आइटम >
- </ string-array >
- <string-array name = "updateIntervalValues" >
- <आइटम का नाम = "1000" > 1000 </ आइटम >
- <आइटम का नाम = "5000" > 5000 </ आइटम >
- <आइटम का नाम = "30000" > 30000 </ आइटम >
- <आइटम का नाम = "60000" > 60000 </ आइटम >
- <आइटम का नाम = "300000" > 300000 </ आइटम >
- </ string-array >
- </ संसाधन >
मैं एक और उपयोगी बिंदु जोड़ूंगा जो काम में आ सकता है। बहुत बार यह एक पासवर्ड या पिन कोड का उपयोग करके एप्लिकेशन तक पहुंच को प्रतिबंधित करना आवश्यक है जो एप्लिकेशन कॉन्फ़िगरेशन में निर्दिष्ट है। जाहिर है, इन उद्देश्यों के लिए
EditTextPreference का उपयोग किया जाता है। लेकिन दर्ज किए गए वर्णों को छिपाने के लिए पासवर्ड या पिन कोड के मामले में यह अच्छा होगा, और कोड के लिए भी प्रवेश को केवल संख्याओं तक सीमित करना होगा। ऐसा करने के लिए, आप क्रमशः
Android: पासवर्ड और
Android: inputType, विशेषताओं का उपयोग कर सकते हैं:
- <EditTextPreference
- Android: की = "पिन"
- Android: शीर्षक = "पिन कोड"
- android: सारांश = "यदि लॉगिन स्क्रीन सक्षम है"
- Android: डायलॉगटेल = "पिन कोड"
- Android: DialMessage = "एक पिन प्रदान करें"
- Android: defaultValue = ""
- Android: inputType = "नंबर"
- Android: पासवर्ड = "सत्य"
- Android: निर्भरता = "runLoginScreen"
- />
जैसा कि ऊपर उल्लेख किया गया है, काम का थोक एरियोड फ्रेमवर्क द्वारा ही किया जाता है। यह दिखाने के लिए कि पहले से ही निर्धारित मापदंडों को कैसे पढ़ा जाए, हम एक और स्क्रीन गतिविधि बनाएंगे जिसे हमारी मुख्य गतिविधि से लॉन्च किया जाएगा। लेकिन पहले, मुख्य कोड को देखें:
- पैकेज com.javacodegeeks.android.preferences ;
- आयात android.content.ntent ;
- आयात android.os.Bundle ;
- आयात android.preference.PreferenceActivity ;
- आयात android.view.Menu ;
- आयात android.view.MenuItem ;
- सार्वजनिक वर्ग QuickPrefsActivity में फैली सक्रियता {
- @Override
- सार्वजनिक शून्य onCreate ( बंडल सहेजा गया
- सुपर । onCreate ( saveInstanceState ) ;
- addPreferencesFromResource ( R. xml प्राथमिकताएँ ) ;
- }
- @Override
- सार्वजनिक बूलियन onCreateOptionsMenu ( मेनू मेनू ) {
- मेनू। जोड़ें ( मेनू । कोई नहीं , 0 , 0 , "वर्तमान सेटिंग दिखाएं" ) ;
- सुपर वापस । onCreateOptionsMenu ( मेनू ) ;
- }
- @Override
- सार्वजनिक बूलियन onOptionsItemSelected ( MenuItem आइटम ) {
- स्विच ( आइटम। getItemId ( ) ) {
- मामला 0 :
- startActivity ( नई आशय ( यह , ShowSettingsActivity। वर्ग ) ) ;
- सच लौटना ;
- }
- झूठे लौटना ;
- }
- }
हमने
onCreateOptionsMenu विधि का उपयोग करके एक
MenuItem तत्व के साथ एक वैकल्पिक मेनू बनाया। जब कोई उपयोगकर्ता किसी मेनू आइटम पर क्लिक करता है, तो हम इस घटना को
onOptionsItemSelected पद्धति में संसाधित करते हैं और
startActivity विधि का उपयोग करके एक नई गतिविधि शुरू करते हैं। (अधिक विवरण
विकल्प मेनू का उपयोग करना और उपयोगकर्ता बातचीत के लिए अनुकूलित संवाद ,
इंटेंट के साथ नई गतिविधियां शुरू करना )।
अब एप्लिकेशन कॉन्फ़िगरेशन मापदंडों को प्रदर्शित करने के लिए एक दूसरा
ShowSettingsActivity बनाएं। लेकिन सबसे पहले, हमें प्रकट फ़ाइल
AndroidManifest.xml में नई गतिविधि का वर्णन करना चाहिए:
- <? xml संस्करण = "1.0" एन्कोडिंग = "utf-8" ?>
- <प्रकट xmlns: android = " schemas.android.com/apk/res/android"
- पैकेज = "com.javacodegeeks.android.preferences"
- Android: versionCode = "1"
- Android: versionName = "1.0" >
- <अनुप्रयोग Android: icon = "@ drawable / icon" Android: label = "@ string / app_name" >
- <गतिविधि Android: name = ".QuickPrefsActivity" Android: label = "@ string / app_name" >
- <आशय-फ़िल्टर >
- <कार्रवाई Android: नाम = "android.intent.action.MAIN" />
- <श्रेणी Android: नाम = "android.intent.category.LAUNCHER" />
- </ आशय-फ़िल्टर >
- </ गतिविधि >
- <गतिविधि Android: name = ".SSSettingsActivity" />
- </ अनुप्रयोग >
- <उपयोग करता है-sdk Android: minSdkVersion = "3" />
- </ प्रकटीकरण >
दूसरी गतिविधि का कोड इस तरह दिखता है:
- पैकेज com.javacodegeeks.android.preferences ;
- आयात android.app.Activity ;
- आयात android.content.SaringPreferences ;
- आयात android.os.Bundle ;
- आयात android.preference.PreferenceManager ;
- आयात android.widget.TextView ;
- सार्वजनिक वर्ग ShowSettingsActivity फैक्ट्री {
- @Override
- संरक्षित शून्य onCreate ( बंडल बचाया
- सुपर । onCreate ( saveInstanceState ) ;
- setContentView ( आर। लेआउट । show_settings_layout ) ;
- SharedPreferences साझा करें getDefaultSaringPreferences ( यह ) ;
- StringBuilder बिल्डर = नया StringBuilder ( ) ;
- बिल्डर। append ( "n" + साझाप्रेम। getBoolean ( "perform_updates" , false ) ) ;
- बिल्डर। एपेंड ( "एन" + शेयर्डप्रेफ़्स। गेटस्ट्रिंग ( "अपडेट_एंटरवाल" , "-1" ) ) ;
- बिल्डर। append ( "n" + sharePrefs। getString ( "welcome_message" , "NULL" ) ) ;
- TextView settingsTextView = ( TextView ) findViewById ( R. id । Settings_text_view ) ;
- settingsTextView। सेटटेक्स्ट ( बिल्डर। स्टर्लिंग ( ) ) ;
- }
- }
यहां हम एप्लिकेशन कॉन्फ़िगरेशन पैरामीटर को
साझा विधि के रूप में पुनः प्राप्त करते हैं, जिसे साझा पद्धति का उपयोग करके किया जाता है। इसके अलावा, पैरामीटर के डेटा प्रकार के आधार पर, हम उचित डेटा निष्कर्षण विधि का उपयोग करते हैं (उदाहरण के लिए,
getBoolean या
getString )। डेटा निष्कर्षण विधि का दूसरा तर्क डिफ़ॉल्ट मान है, यदि एक ही नाम वाला पैरामीटर अभी तक सेट नहीं किया गया है। पैरामीटर नाम के रूप में, हम XML
वरीयताओं में निर्दिष्ट कुंजियों का उपयोग करते
हैं । xml फ़ाइल। पैरामीटर मानों को एक
TextView में प्रदर्शित और प्रदर्शित किया जाता है।
यहां दूसरी गतिविधि के लिए एक सरल उपयोगकर्ता इंटरफ़ेस विवरण दिया गया है:
- <? xml संस्करण = "1.0" एन्कोडिंग = "utf-8" ?>
- <LinearLayout
- xmlns: android = " schemas.android.com/apk/res/android"
- Android: ओरिएंटेशन = "वर्टिकल"
- एंड्रॉइड: लेआउट_ एक्सपोज़र = "fill_parent"
- Android: Layout_height = "fill_parent"
- >
- <TextView
- Android: id = "@ + id / settings_text_view"
- एंड्रॉइड: लेआउट_ एक्सपोज़र = "fill_parent"
- Android: Layout_height = "wra_content"
- />
- </ LinearLayout >
चलो आवेदन चलाते हैं, हम अपने विकल्पों की एक सूची देखेंगे:

"अपडेट अंतराल" पर क्लिक करें और संभावित मूल्यों की सूची देखें:

"स्वागत संदेश" पर क्लिक करें और स्वागत पाठ का संपादन देखें:

आइए दिए गए मापदंडों को देखें। मेनू बटन पर क्लिक करें और एकल आइटम "वर्तमान सेटिंग्स दिखाएं" चुनें। दूसरी गतिविधि शुरू होगी जिसमें हम अपने कॉन्फ़िगरेशन मापदंडों के मूल्यों को देखेंगे:

वह सब है। जैसा कि आप देख सकते हैं, यह वास्तव में आसान है। सौभाग्य है
मूल: एंड्रॉइड क्विक प्रेफरेंस ट्यूटोरियल