सेटिंग Android Jetpack का हिस्सा है.
सेटिंग की मदद से, उपयोगकर्ता किसी ऐप्लिकेशन के काम करने के तरीके और उसके काम करने के तरीके में बदलाव कर सकते हैं. सेटिंग में ये काम किए जा सकते हैं बैकग्राउंड के व्यवहार पर असर डालता है. जैसे, ऐप्लिकेशन, डेटा को कितनी बार सिंक करता है हो सकता है या वे ज़्यादा लोगों तक पहुंच सकते हों. जैसे, कॉन्टेंट में बदलाव करना और यूज़र इंटरफ़ेस का प्रज़ेंटेशन
अपने ऐप्लिकेशन में उपयोगकर्ता कॉन्फ़िगर की जा सकने वाली सेटिंग जोड़ने के लिए, AndroidX का इस्तेमाल करें प्राथमिकता लाइब्रेरी. यह लाइब्रेरी यूज़र इंटरफ़ेस को मैनेज करती है और ताकि आप सिर्फ़ उन अलग-अलग सेटिंग को तय कर सकें जिन्हें उपयोगकर्ता कॉन्फ़िगर करें. लाइब्रेरी एक मटीरियल डिज़ाइन थीम के साथ आती है, जो सभी डिवाइसों और ओएस वर्शन पर एक जैसा उपयोगकर्ता अनुभव दे सकें.
शुरू करें
Preference
मूल बिल्डिंग है
प्राथमिकता लाइब्रेरी का ब्लॉक. सेटिंग स्क्रीन में Preference
है
हैरारकी. आप इस पदानुक्रम को एक XML संसाधन के रूप में परिभाषित कर सकते है या आप बिल्ड
कोड को अलग-अलग क्रम में दिखाना.
नीचे दिए सेक्शन में, AndroidX की प्राथमिकता वाली लाइब्रेरी.
शुरू करने से पहले, अपने build.gradle
में प्राथमिकता लाइब्रेरी डिपेंडेंसी जोड़ें
फ़ाइल:
ग्रूवी
dependencies { implementation "androidx.preference:preference-ktx:1.2.0" }
Kotlin
dependencies { implementation("androidx.preference:preference-ktx:1.2.0") }
Gradle सिंक होने के बाद, आपके पास टास्क के एक्सएमएल वाले हिस्से पर जाने का विकल्प होता है.
हैरारकी बनाना
अपने प्रोजेक्ट में, res/xml
फ़ोल्डर में जाएं. इसके बाद, एक preferences.xml
फ़ाइल बनाएं,
और इसमें निम्न कोड जोड़ दें:
<PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto"> <SwitchPreferenceCompat app:key="notifications" app:title="Enable message notifications"/> <Preference app:key="feedback" app:title="Send feedback" app:summary="Report technical issues or suggest new features"/> </PreferenceScreen>
इस हैरारकी में दो Preference
ऑब्जेक्ट हैं: a
SwitchPreferenceCompat
इससे उपयोगकर्ता, सेटिंग को टॉगल करके चालू और बंद कर सकते हैं. साथ ही, सामान्य Preference
का इस्तेमाल कर सकते हैं
विजेट.
हैरारकी बनाते समय, हर Preference
के लिए एक खास कुंजी होनी चाहिए.
हैरारकी को इनफ़्लेट करें
एक्सएमएल एट्रिब्यूट से हैरारकी को बढ़ाने के लिए,
PreferenceFragmentCompat
बदलें
onCreatePreferences()
,
और बढ़ाने के लिए एक्सएमएल रिसॉर्स दें, जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है:
Kotlin
class MySettingsFragment : PreferenceFragmentCompat() { override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { setPreferencesFromResource(R.xml.preferences, rootKey) } }
Java
public class MySettingsFragment extends PreferenceFragmentCompat { @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { setPreferencesFromResource(R.xml.preferences, rootKey); } }
इसके बाद, इस Fragment
को अपने Activity
में उसी तरह जोड़ें जैसा किसी और वेबसाइट के लिए किया जाता है
Fragment
:
Kotlin
class MySettingsActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) supportFragmentManager .beginTransaction() .replace(R.id.settings_container, MySettingsFragment()) .commit() } }
Java
public class MySettingsActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getSupportFragmentManager() .beginTransaction() .replace(R.id.settings_container, new MySettingsFragment()) .commit(); } }
नतीजा यहां दी गई इमेज में दिखाया गया है:
प्राथमिकताओं को मॉनिटर करें
आपकी पसंद में बदलाव होने पर, आपको इवेंट में शामिल होने के लिए लिसनर रजिस्टर करना होगा यह:
Kotlin
findPreference<SwitchPreferenceCompat>("notifications") ?.setOnPreferenceChangeListener { _, newValue -> Log.d("Preferences", "Notifications enabled: $newValue") true // Return true if the event is handled. } findPreference<Preference>("feedback") ?.setOnPreferenceClickListener { Log.d("Preferences", "Feedback was clicked") true // Return true if the click is handled. }
Java
SwitchPreferenceCompat notificationsPref = findPreference("notifications"); if (notificationsPref != null) { notificationsPref.setOnPreferenceChangeListener((preference, newValue) -> { Log.d("Preferences", String.format("Notifications enabled: %s", newValue)); return true; // Return true if the event is handled. }); } Preference feedbackPref = findPreference("feedback"); if (feedbackPref != null) { feedbackPref.setOnPreferenceClickListener((preference) -> { Log.d("Preferences", "Feedback was clicked"); return true; // Return true if the event is handled. }); }
वर्तमान प्राथमिकता मान पढ़ें
PreferenceFragmentCompat
यह जानकारी सेव करने में इस्तेमाल होने वाली ज़्यादातर मशीनों को छिपा देता है
प्राथमिकताएं पढ़ना. हालांकि, सब कुछ
SharedPreferences
, और आप इन वैल्यू को उसी तरह पढ़ सकते हैं जैसे आप आम तौर पर करते हैं
SharedPreferences
:
Kotlin
val preferences = PreferenceManager.getDefaultSharedPreferences(this).all preferences.forEach { Log.d("Preferences", "${it.key} -> ${it.value}") }
Java
var preferences = PreferenceManager.getDefaultSharedPreferences(context).getAll(); preferences.forEach((key, value) ->{ Log.d("Preferences", String.format("%s -> %s", key, value)); });
पिछले स्निपेट कोSharedPreferences
ऐप्लिकेशन, सेव की गई सभी वैल्यू ऐक्सेस करता है, उन पर लूप करता है, और उन्हें
लॉगकैट.