আপনার সেটিংস সাজান 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
নেস্ট করা <PreferenceScreen> ব্যবহার করে একই XML রিসোর্সের মধ্যে নেস্ট করা হায়ারার্কি ঘোষণা করার সুবিধা আর কাজ করে না। পরিবর্তে নেস্ট করা Fragment অবজেক্ট
ব্যবহার করুন।
আলাদা অ্যাক্টিভিটি ব্যবহার করুন
বিকল্প হিসেবে, আপনাকে যদি প্রতিটি স্ক্রিন ব্যাপকভাবে কাস্টমাইজ করতে হয় অথবা আপনি যদি স্ক্রিনের মধ্যে সম্পূর্ণ
Activity ট্রানজিশন চান, তাহলে প্রতিটি PreferenceFragmentCompat-এর জন্য
আলাদা Activity ব্যবহার করতে পারেন। এটি করার মাধ্যমে, আপনি প্রতিটি Activity এবং
তার সাথে সম্পর্কিত সেটিংস স্ক্রিন সম্পূর্ণভাবে কাস্টমাইজ করতে পারবেন। বেশিরভাগ অ্যাপের ক্ষেত্রে, আমরা এটি সাজেস্ট করি না;
পরিবর্তে, আগে যেমন বর্ণনা করা হয়েছে সেই অনুযায়ী Fragments ব্যবহার করুন।
Preference থেকে Activity লঞ্চ করার ব্যাপারে আরও তথ্য পেতে, পছন্দের অ্যাকশন দেখুন।