अपनी सेटिंग व्यवस्थित करना Android Jetpack का हिस्सा है.
बड़ी और जटिल सेटिंग स्क्रीन की वजह से उपयोगकर्ता को वाली सेटिंग चुननी होगी, जिसे वे बदलना चाहते हैं. प्राथमिकता लाइब्रेरी इन तरीकों से जानकारी मिल सकती है.
प्राथमिकता की कैटगरी
अगर आपके पास
किसी एक आइटम में Preference
ऑब्जेक्ट
सकते हैं, तो आप
PreferenceCategory
. ऐप्लिकेशन
PreferenceCategory
कैटगरी का टाइटल दिखाता है और विज़ुअल तौर पर,
श्रेणी.
एक्सएमएल में PreferenceCategory
तय करने के लिए, Preference
टैग को
PreferenceCategory
, इसके बारे में नीचे बताया गया है:
<PreferenceScreen
xmlns:app="http://schemas.android.com/apk/res-auto">
<PreferenceCategory
app:key="notifications_category"
app:title="Notifications">
<SwitchPreferenceCompat
app:key="notifications"
app:title="Enable message notifications"/>
</PreferenceCategory>
<PreferenceCategory
app:key="help_category"
app:title="Help">
<Preference
app:key="feedback"
app:summary="Report technical issues or suggest new features"
app:title="Send feedback"/>
</PreferenceCategory>
</PreferenceScreen>
नतीजा ऐसा दिखता है:

अपने क्रम को एक से ज़्यादा स्क्रीन में बांटें
अगर आपके पास कई Preference
ऑब्जेक्ट या अलग-अलग कैटगरी हैं, तो
उन्हें अलग-अलग स्क्रीन पर दिखाया जा सकता है. हर स्क्रीन
PreferenceFragmentCompat
की अलग हैरारकी है. Preference
ऑब्जेक्ट
तो आपकी शुरुआती स्क्रीन पर उन सबस्क्रीन से लिंक किया जा सकता है जिनमें
प्राथमिकताएं.
दूसरी इमेज में दिखाया गया क्रम आसान है, जिसमें दो कैटगरी हैं: मैसेज और सिंक करें.

इमेज 3 में, कई स्क्रीन में बंटा हुआ प्राथमिकताओं का वही सेट दिखाया गया है:

स्क्रीन को Preference
से लिंक करने के लिए, एक्सएमएल में app:fragment
का एलान किया जा सकता है या
आप इसका इस्तेमाल कर सकते हैं
Preference.setFragment()
.
PreferenceFragmentCompat
का पूरा पैकेज नाम तब लॉन्च करें, जब
Preference
पर टैप किया गया है, जैसा कि इस उदाहरण में दिखाया गया है:
<Preference
app:fragment="com.example.SyncFragment"
.../>
जब कोई उपयोगकर्ता, जुड़े हुए Fragment
वाले Preference
पर टैप करता है, तो इंटरफ़ेस
तरीका
PreferenceFragmentCompat.OnPreferenceStartFragmentCallback.onPreferenceStartFragment()
को कॉल किया जाता है. इस तरीके में नई स्क्रीन दिखाना और जहां
स्क्रीन को आस-पास के Activity
में लागू किया गया है.
एक आम तौर पर लागू होने वाला यह तरीका कुछ ऐसा दिखता है:
class MyActivity : AppCompatActivity(),
PreferenceFragmentCompat.OnPreferenceStartFragmentCallback {
...
override fun onPreferenceStartFragment(caller: PreferenceFragmentCompat, pref: Preference): Boolean {
// Instantiate the new Fragment.
val args = pref.extras
val fragment = supportFragmentManager.fragmentFactory.instantiate(
classLoader,
pref.fragment)
fragment.arguments = args
fragment.setTargetFragment(caller, 0)
// Replace the existing Fragment with the new Fragment.
supportFragmentManager.beginTransaction()
.replace(R.id.settings_container, fragment)
.addToBackStack(null)
.commit()
return true
}
}
public class MyActivity extends AppCompatActivity implements
PreferenceFragmentCompat.OnPreferenceStartFragmentCallback {
...
@Override
public boolean onPreferenceStartFragment(PreferenceFragmentCompat caller, Preference pref) {
// Instantiate the new Fragment.
final Bundle args = pref.getExtras();
final Fragment fragment = getSupportFragmentManager().getFragmentFactory().instantiate(
getClassLoader(),
pref.getFragment());
fragment.setArguments(args);
fragment.setTargetFragment(caller, 0);
// Replace the existing Fragment with the new Fragment.
getSupportFragmentManager().beginTransaction()
.replace(R.id.settings_container, fragment)
.addToBackStack(null)
.commit();
return true;
}
}
प्राथमिकता स्क्रीन
नेस्ट किए गए विकल्प का इस्तेमाल करके, एक ही एक्सएमएल रिसॉर्स में नेस्ट की गई हैरारकी का एलान करना
<PreferenceScreen>
अब मौजूद नहीं है. नेस्ट किए गए Fragment
ऑब्जेक्ट इस्तेमाल करें
आज़माएं.
अलग-अलग गतिविधियों का इस्तेमाल करें
इसके अलावा, अगर आपको हर स्क्रीन में बहुत ज़्यादा पसंद के मुताबिक बदलाव करने की ज़रूरत है या
स्क्रीन के बीच Activity
ट्रांज़िशन, इनके लिए अलग Activity
का इस्तेमाल किया जा सकता है
हर PreferenceFragmentCompat
. ऐसा करके, हर चीज़ को अपनी पसंद के मुताबिक बनाया जा सकता है
Activity
और इससे जुड़ी सेटिंग की स्क्रीन. ज़्यादातर ऐप्लिकेशन के लिए, हम
इसका सुझाव दिया गया; इसके बजाय, ऊपर बताए गए तरीके से Fragments
का इस्तेमाल करें.
Preference
से Activity
लॉन्च करने के बारे में ज़्यादा जानकारी के लिए, देखें
प्राथमिकता वाली कार्रवाइयां.