আপনার সেটিংস সাজান   Android Jetpack-এর অংশ।

সেটিংসের স্ক্রিন বড় ও জটিল হলে, ব্যবহারকারীর পক্ষে নির্দিষ্ট কোনও সেটিং খুঁজে পাওয়া কঠিন হতে পারে। আপনার সেটিংস স্ক্রিন আরও ভালোভাবে সাজাতে, পছন্দ লাইব্রেরি নিম্নলিখিত উপায়গুলি অফার করে।

পছন্দের বিভাগ

একটি স্ক্রিনে আপনার কাছে একাধিক সম্পর্কিত Preference অবজেক্ট থাকলে, আপনি PreferenceCategory ব্যবহার করে সেগুলিকে গ্রুপ করতে পারেন। PreferenceCategory একটি বিভাগের শীর্ষক দেখায় এবং বিভাগটিকে দৃশ্যত আলাদা করে।

XML-এ 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টি অবজেক্ট তারপরে সাবস্ক্রিনের সাথে লিঙ্ক করতে পারে যাতে সম্পর্কিত পছন্দ থাকে।

ছবি ২-এ একটি সাধারণ হায়ারার্কি দেখানো হয়েছে যাতে দুটি বিভাগ আছে: Messages এবং সিঙ্ক।

ছবিতে হায়ারার্কি সহ পছন্দ স্ক্রিন দেখানো হচ্ছে
ছবি ২. দুটি বিভাগ সহ একটি সহজ হায়ারার্কি।

ছবি ৩-এ একই ধরনের পছন্দ একাধিক স্ক্রিনে ভাগ করে দেখানো হয়েছে:

একটি ছবি যাতে একাধিক স্ক্রিনে বিভক্ত একটি হায়ারার্কি দেখানো হয়েছে
ছবি ৩. একাধিক স্ক্রিনে বিভক্ত একটি শ্রেণিবিন্যাস।

Preference-এর সাথে স্ক্রিন লিঙ্ক করতে, আপনি XML-এ app:fragment ঘোষণা করতে পারেন অথবা আপনি Preference.setFragment() ব্যবহার করতে পারেন। Preference-এ ট্যাপ করা হলে, PreferenceFragmentCompat-এর সম্পূর্ণ প্যাকেজের নাম লঞ্চ করুন, যেমন নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

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

জাভা

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

PreferenceScreens

নেস্ট করা &lt;PreferenceScreen&gt; ব্যবহার করে একই XML রিসোর্সের মধ্যে নেস্ট করা হায়ারার্কি ঘোষণা করার সুবিধা আর কাজ করে না। পরিবর্তে নেস্ট করা Fragment অবজেক্ট ব্যবহার করুন।

আলাদা অ্যাক্টিভিটি ব্যবহার করুন

বিকল্প হিসেবে, আপনাকে যদি প্রতিটি স্ক্রিন ব্যাপকভাবে কাস্টমাইজ করতে হয় অথবা আপনি যদি স্ক্রিনের মধ্যে সম্পূর্ণ Activity ট্রানজিশন চান, তাহলে প্রতিটি PreferenceFragmentCompat-এর জন্য আলাদা Activity ব্যবহার করতে পারেন। এটি করার মাধ্যমে, আপনি প্রতিটি Activity এবং তার সাথে সম্পর্কিত সেটিংস স্ক্রিন সম্পূর্ণভাবে কাস্টমাইজ করতে পারবেন। বেশিরভাগ অ্যাপের ক্ষেত্রে, আমরা এটি সাজেস্ট করি না; পরিবর্তে, আগে যেমন বর্ণনা করা হয়েছে সেই অনুযায়ী Fragments ব্যবহার করুন।

Preference থেকে Activity লঞ্চ করার ব্যাপারে আরও তথ্য পেতে, পছন্দের অ্যাকশন দেখুন।