अपनी सेटिंग व्यवस्थित करना 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 में लागू किया गया है.

एक आम तौर पर लागू होने वाला यह तरीका कुछ ऐसा दिखता है:

Kotlin

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
    }
}

Java

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;
    }
}

प्राथमिकता स्क्रीन

नेस्ट किए गए विकल्प का इस्तेमाल करके, एक ही एक्सएमएल रिसॉर्स में नेस्ट की गई हैरारकी का एलान करना &lt;PreferenceScreen&gt; अब मौजूद नहीं है. नेस्ट किए गए Fragment ऑब्जेक्ट इस्तेमाल करें आज़माएं.

अलग-अलग गतिविधियों का इस्तेमाल करें

इसके अलावा, अगर आपको हर स्क्रीन में बहुत ज़्यादा पसंद के मुताबिक बदलाव करने की ज़रूरत है या स्क्रीन के बीच Activity ट्रांज़िशन, इनके लिए अलग Activity का इस्तेमाल किया जा सकता है हर PreferenceFragmentCompat. ऐसा करके, हर चीज़ को अपनी पसंद के मुताबिक बनाया जा सकता है Activity और इससे जुड़ी सेटिंग की स्क्रीन. ज़्यादातर ऐप्लिकेशन के लिए, हम इसका सुझाव दिया गया; इसके बजाय, ऊपर बताए गए तरीके से Fragments का इस्तेमाल करें.

Preference से Activity लॉन्च करने के बारे में ज़्यादा जानकारी के लिए, देखें प्राथमिकता वाली कार्रवाइयां.