আপনার সেটিংস সংগঠিত করুন অ্যান্ড্রয়েড জেটপ্যাকের অংশ।

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

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

XML-এ একটি PreferenceCategory সংজ্ঞায়িত করতে, একটি PreferenceCategory দিয়ে Preference ট্যাগগুলিকে মোড়ানো করুন, নিম্নরূপ:

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

ফলাফল নিম্নলিখিত মত দেখায়:

বিভাগ সহ পছন্দগুলি দেখানো একটি চিত্র৷
চিত্র 1. বিভাগের মধ্যে পছন্দসমূহ।

আপনার অনুক্রমকে একাধিক স্ক্রিনে বিভক্ত করুন

আপনার যদি প্রচুর সংখ্যক Preference বস্তু বা স্বতন্ত্র বিভাগ থাকে তবে আপনি সেগুলিকে আলাদা স্ক্রিনে প্রদর্শন করতে পারেন। প্রতিটি স্ক্রীন হল একটি PreferenceFragmentCompat যার নিজস্ব আলাদা অনুক্রম। আপনার প্রারম্ভিক স্ক্রীনে Preference বস্তুগুলি তখন সাবস্ক্রিনগুলির সাথে লিঙ্ক করতে পারে যা সম্পর্কিত পছন্দগুলি রয়েছে৷

চিত্র 2 একটি সাধারণ শ্রেণিবিন্যাস দেখায় যাতে দুটি বিভাগ রয়েছে: বার্তা এবং সিঙ্ক

শ্রেণিবিন্যাস সহ একটি পছন্দের স্ক্রীন দেখানো একটি চিত্র৷
চিত্র 2. দুটি বিভাগ সহ একটি সাধারণ শ্রেণিবিন্যাস।

চিত্র 3 একাধিক স্ক্রিনে বিভক্ত পছন্দগুলির একই সেট দেখায়:

একাধিক স্ক্রিনে বিভক্ত একটি শ্রেণিবিন্যাস দেখানো একটি চিত্র
চিত্র 3. একটি শ্রেণিবিন্যাস একাধিক পর্দায় বিভক্ত।

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

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

পছন্দের পর্দা

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

পৃথক কার্যকলাপ ব্যবহার করুন

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

একটি Preference থেকে একটি Activity চালু করার বিষয়ে আরও তথ্যের জন্য, পছন্দ কর্ম দেখুন।