আপনার সেটিংস কাস্টমাইজ করুন Android Jetpack-এর অংশ।
এই ডকুমেন্ট থেকে জানতে পারবেন যে আপনার হায়ারার্কিতে কীভাবে
Preference অবজেক্ট কাস্টমাইজ করতে হয়।
পছন্দ খুঁজুন
কোনও স্বতন্ত্র Preference অ্যাক্সেস করতে, যেমন Preference ভ্যালু পাওয়া বা সেট করার সময়, PreferenceFragmentCompat.findPreference() ব্যবহার করুন।
এই পদ্ধতিটি প্রদত্ত কী সহ Preference-এর জন্য সম্পূর্ণ হায়ারার্কি সার্চ করে।
যেমন, "signature"-এর
কী দিয়ে EditTextPreference
অ্যাক্সেস করতে, নিম্নলিখিত ধাপগুলি অনুসরণ করুন:
<EditTextPreference app:key="signature" app:title="Your signature"/>
নিম্নলিখিত কোড ব্যবহার করে এই Preference ফিরিয়ে আনুন:
Kotlin
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { setPreferencesFromResource(R.xml.preferences, rootKey) val signaturePreference: EditTextPreference? = findPreference("signature") // Do something with this preference. }
জাভা
@Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { setPreferencesFromResource(R.xml.preferences, rootKey); EditTextPreference signaturePreference = findPreference("signature"); // Do something with this preference. }
পছন্দের দৃশ্যমানতা নিয়ন্ত্রণ করুন
ব্যবহারকারী সেটিংস স্ক্রিনে নেভিগেট করার সময় কোন কোন Preference অবজেক্ট দেখতে পাবেন তা আপনি নিয়ন্ত্রণ করতে পারবেন। যেমন, কোনও নির্দিষ্ট Preference যদি
শুধুমাত্র সংশ্লিষ্ট ফিচার চালু থাকলে অর্থপূর্ণ হয়, তাহলে ফিচারটি বন্ধ থাকলে আপনি
সেই Preference লুকাতে চাইতে পারেন।
কোনও শর্ত পূরণ হলে তবেই Preference দেখাতে, প্রথমে XML-এ Preference-এর
দৃশ্যমানতা 'মিথ্যা' হিসেবে সেট করুন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:
<EditTextPreference app:key="signature" app:title="Your signature" app:isPreferenceVisible="false"/>
onCreatePreferences()-এ, সংশ্লিষ্ট শর্ত পূরণ হলে
Preference দেখান:
Kotlin
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { setPreferencesFromResource(R.xml.preferences, rootKey) if(/*some feature*/) { val signaturePreference: EditTextPreference? = findPreference("signature") signaturePreference?.isVisible = true } }
জাভা
@Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { setPreferencesFromResource(R.xml.preferences, rootKey); if(/*some feature*/) { EditTextPreference signaturePreference = findPreference("signature"); if (signaturePreference != null) { signaturePreference.setVisible(true); } } }
ডায়নামিকভাবে সারাংশ আপডেট করুন
Preference-এ ডেটা সেভ করা থাকলে, Preference-এর বর্তমান অবস্থা সম্পর্কে ব্যবহারকারীকে আরও ভালোভাবে বোঝাতে, এর সারসংক্ষেপ-এ বর্তমান ভ্যালু দেখাতে হবে। যেমন, EditTextPreference-এ সেভ করা টেক্সট ভ্যালু
দেখাতে হবে এবং ListPreference-এ বেছে নেওয়া তালিকা এন্ট্রি দেখাতে হবে। এছাড়াও, আপনার কাছে
Preference অবজেক্ট থাকতে পারে যেগুলির ইন্টার্নাল বা এক্সটার্নাল অ্যাপের অবস্থার উপর ভিত্তি করে
তাদের সারসংক্ষেপ আপডেট করতে হবে—যেমন, একটি Preference যা একটি ভার্সন
নম্বর দেখায়। আপনি SummaryProvider ব্যবহার করে
এটি করতে পারবেন।
SimpleSummaryProvider ব্যবহার করুন
ListPreference
এবং
EditTextPreference
সহজ SummaryProvider প্রয়োগ অন্তর্ভুক্ত করে যা অটোমেটিক
সেভ করা Preference ভ্যালু সারসংক্ষেপ হিসেবে দেখায়। কোনও ভ্যালু সেভ করা না থাকলে, "সেট করা
নেই" দেখায়।
XML থেকে এইসব ইমপ্লিমেন্টেশন চালু করতে, app:useSimpleSummaryProvider="true" সেট করুন।
বিকল্প হিসেবে, কোডে আপনি
ListPreference.SimpleSummaryProvider.getInstance()
এবং
EditTextPreference.SimpleSummaryProvider.getInstance()
ব্যবহার করে সাধারণ SummaryProvider ইনস্ট্যান্স পেতে পারেন এবং তারপর এটি
Preference-এ সেট করতে পারেন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:
Kotlin
listPreference.summaryProvider = ListPreference.SimpleSummaryProvider.getInstance() editTextPreference.summaryProvider = EditTextPreference.SimpleSummaryProvider.getInstance()
জাভা
listPreference.setSummaryProvider(ListPreference.SimpleSummaryProvider.getInstance()); editTextPreference.setSummaryProvider(EditTextPreference.SimpleSummaryProvider.getInstance());
কাস্টম SummaryProvider ব্যবহার করুন
আপনি নিজের SummaryProvider তৈরি করতে এবং
provideSummary()
ওভাররাইড করতে পারবেন যাতে Preference-এর অনুরোধ অনুযায়ী সারসংক্ষেপ কাস্টমাইজ করা যায়। যেমন, নিম্নলিখিত EditTextPreference-এ সেভ করা ভ্যালুর দৈর্ঘ্য সারসংক্ষেপ হিসেবে
দেখানো হয়েছে:
EditTextPreference।
উদাহরণ হিসেবে, নিম্নলিখিত EditTextPreference ধরে নিন:
<EditTextPreference app:key="counting" app:title="Counting preference"/>
onCreatePreferences()-এ, আপনি একটি নতুন SummaryProvider তৈরি করতে এবং ওভাররাইড করতে পারেন
provideSummary() যাতে দেখানো সারসংক্ষেপ ফেরত দেওয়া যায়:
Kotlin
val countingPreference: EditTextPreference? = findPreference("counting") countingPreference?.summaryProvider = SummaryProvider<EditTextPreference> { preference -> val text = preference.text if (text.isNullOrEmpty()) { "Not set" } else { "Length of saved value: " + text.length } }
জাভা
EditTextPreference countingPreference = findPreference("counting"); if (countingPreference != null) { countingPreference.setSummaryProvider(new SummaryProvider<EditTextPreference>() { @Override public CharSequence provideSummary(EditTextPreference preference) { String text = preference.getText(); if (TextUtils.isEmpty(text) || text == null){ return "Not set"; } return "Length of saved value: " + text.length(); } }); }
Preference সারসংক্ষেপ সেভ করা ভ্যালুর দৈর্ঘ্য দেখায় অথবা সেভ করা ভ্যালু না থাকলে "সেট করা নেই" দেখায়।
EditTextPreference ডায়ালগ কাস্টমাইজ করুন
EditTextPreference ডায়ালগের মধ্যে, আপনি
OnBindEditTextListener
অ্যাটাচ করে টেক্সট ফিল্ডের আচরণ কাস্টমাইজ করতে পারবেন।
ব্যবহারকারীকে ডায়ালগ দেখানো হলে এই লিসেনারকে ডাকা হয়।
উদাহরণস্বরূপ, আপনি শুধুমাত্র নম্বর গ্রহণ করার জন্য একটি ডায়ালগ কাস্টমাইজ করতে পারেন। প্রথমে, EditTextPreference
তৈরি করুন:
<EditTextPreference app:key="number" app:title="Numbers only preference"/>
এরপর, onCreatePreferences()-এ, নতুন OnBindEditTextListener তৈরি করুন এবং
ব্যবহারকারীকে EditText দেখানোর সময় সেটি কাস্টমাইজ করতে onBindEditText() ওভাররাইড
করুন।
Kotlin
val numberPreference: EditTextPreference? = findPreference("number") numberPreference?.setOnBindEditTextListener { editText -> editText.inputType = InputType.TYPE_CLASS_NUMBER }
জাভা
EditTextPreference numberPreference = findPreference("number"); if (numberPreference != null) { numberPreference.setOnBindEditTextListener( new EditTextPreference.OnBindEditTextListener() { @Override public void onBindEditText(@NonNull EditText editText) { editText.setInputType(InputType.TYPE_CLASS_NUMBER); } }); }
এখন, ব্যবহারকারীকে ডায়ালগ দেখানো হলে, কীবোর্ড শুধুমাত্র সংখ্যা মোডে খোলে, যাতে ব্যবহারকারী EditText-এ শুধুমাত্র সংখ্যা লিখতে পারেন।
পছন্দ সংক্রান্ত অ্যাকশন
ট্যাপ করা হলে, Preference-এর একটি নির্দিষ্ট অ্যাকশন থাকতে পারে। যেমন, একটি
Preference আপনার অ্যাপের একটি আলাদা অংশের লিঙ্ক হিসেবে কাজ করতে পারে। Preference-এ
অ্যাকশন যোগ করতে, আপনি সরাসরি Preference-এ Intent সেট করতে পারেন অথবা
আরও নির্দিষ্ট লজিকের জন্য
OnPreferenceClickListener
সেট করতে পারেন।
উদ্দেশ্য সেট করুন
আপনি Preference-এ Intent সেট করতে পারেন যাতে Preference-এ ট্যাপ করা হলে নতুন Fragment,
Activity বা আলাদা অ্যাপ চালু হয়। এটি প্রদত্ত Intent-এর সাথে
Context.startActivity()
ব্যবহার করার
মতোই।
আপনি নেস্ট করা <intent> ট্যাগ ব্যবহার করে XML-এ Intent সেট করতে পারবেন। নিচের
উদাহরণে এমন একটি Intent-এর সংজ্ঞা দেওয়া হয়েছে যা Activity লঞ্চ করে:
<Preference app:key="activity" app:title="Launch activity"> <intent android:targetPackage="com.example" android:targetClass="com.example.ExampleActivity"/> </Preference>
বিকল্প হিসেবে, আপনি সরাসরি Preference-এ setIntent() ব্যবহার করতে পারেন, যেমন:
Kotlin
val intent = Intent(context, ExampleActivity::class.java) activityPreference.setIntent(intent)
জাভা
Intent intent = new Intent(getContext(), ExampleActivity.class); activityPreference.setIntent(intent);
এছাড়াও, আপনি XML ব্যবহার করে Intent-এর সাথে অতিরিক্ত আইটেম যোগ করতে পারেন:
<Preference app:key="activity" app:title="Launch activity"> <intent android:targetPackage="com.example" android:targetClass="com.example.ExampleActivity"> <extra android:name="example_key" android:value="example_value"/> </intent> </Preference>
এখানে Intent সহ Preference-এর একটি উদাহরণ দেওয়া হল যা একটি ওয়েব পেজ লঞ্চ করে:
<Preference app:key="webpage" app:title="View webpage"> <intent android:action="android.intent.action.VIEW" android:data="http://www.google.com" /> </Preference>
Kotlin
val intent = Intent(Intent.ACTION_VIEW) intent.data = Uri.parse("http://www.google.com") val webpagePreference = findPreference("webpage") webpagePreference?.intent = intent
জাভা
Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse("http://www.google.com")); webpagePreference.setIntent(intent);
OnPreferenceClickListener
আপনি Preference-এ OnPreferenceClickListener সেট করতে পারেন, যা Preference ট্যাপ করা হলে onPreferenceClick()-এ কলব্যাক যোগ করে। যেমন,
নেভিগেশন ম্যানেজ করার জন্য আপনার কাছে আরও জটিল লজিক থাকলে,
অন্য Fragment বা Activity-এ নেভিগেট করতে আপনি লিসেনার ব্যবহার করতে পারেন।
OnPreferenceClickListener সেট করতে, নিম্নলিখিত কোডের মতো কোড ব্যবহার করুন:
Kotlin
onClickPreference.setOnPreferenceClickListener({ // Do something. true })
জাভা
onClickPreference.setOnPreferenceClickListener(preference -> { // Do something. return true; });