আপনার সেটিংস কাস্টমাইজ করুন Android Jetpack এর অংশ।
এই নথিটি বর্ণনা করে কিভাবে আপনার অনুক্রমের Preference
বস্তুগুলিকে কাস্টমাইজ করতে হয়।
পছন্দ খুঁজুন
একটি পৃথক Preference
অ্যাক্সেস করতে, যেমন একটি Preference
মান পাওয়া বা সেট করার সময়, PreferenceFragmentCompat.findPreference()
ব্যবহার করুন। এই পদ্ধতিটি প্রদত্ত কী দিয়ে একটি Preference
জন্য সমগ্র শ্রেণিবিন্যাস অনুসন্ধান করে।
উদাহরণস্বরূপ, "signature"
এর একটি কী সহ একটি EditTextPreference
অ্যাক্সেস করতে, নিম্নলিখিতগুলি করুন:
<EditTextPreference app:key="signature" app:title="Your signature"/>
নিম্নলিখিত কোড ব্যবহার করে এই Preference
পুনরুদ্ধার করুন:
কোটলিন
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
দেখান:
কোটলিন
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
এ সেট করতে পারেন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:
কোটলিন
listPreference.summaryProvider = ListPreference.SimpleSummaryProvider.getInstance() editTextPreference.summaryProvider = EditTextPreference.SimpleSummaryProvider.getInstance()
জাভা
listPreference.setSummaryProvider(ListPreference.SimpleSummaryProvider.getInstance()); editTextPreference.setSummaryProvider(EditTextPreference.SimpleSummaryProvider.getInstance());
একটি কাস্টম সারাংশ প্রদানকারী ব্যবহার করুন
আপনি আপনার নিজস্ব SummaryProvider
তৈরি করতে পারেন এবং যখনই Preference
দ্বারা অনুরোধ করা হয় তখনই সারাংশ কাস্টমাইজ করতে provideSummary()
ওভাররাইড করতে পারেন। উদাহরণস্বরূপ, নিম্নলিখিত EditTextPreference
তার সংরক্ষিত মানের দৈর্ঘ্য সারাংশ হিসাবে প্রদর্শন করে:
একটি উদাহরণ হিসাবে, নিম্নলিখিত EditTextPreference
অনুমান করুন:
<EditTextPreference app:key="counting" app:title="Counting preference"/>
onCreatePreferences()
তে, আপনি একটি নতুন SummaryProvider
তৈরি করতে পারেন এবং সারাংশটি প্রদর্শনের জন্য ফিরিয়ে দিতে provideSummary()
ওভাররাইড করতে পারেন:
কোটলিন
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()
ওভাররাইড করুন।
কোটলিন
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
ট্যাপ করা হয় তখন আপনি একটি নতুন Fragment
, Activity
, বা পৃথক অ্যাপ চালু করতে একটি Preference
উপর একটি Intent
সেট করতে পারেন৷ এটি একটি প্রদত্ত 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()
ব্যবহার করতে পারেন, নিম্নরূপ:
কোটলিন
val intent = Intent(context, ExampleActivity::class.java) activityPreference.setIntent(intent)
জাভা
Intent intent = new Intent(getContext(), ExampleActivity.class); activityPreference.setIntent(intent);
আপনি এক্সএমএল ব্যবহার করে একটি 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>
কোটলিন
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
সেট করতে পারেন, যা onPreferenceClick()
এ একটি কলব্যাক যোগ করে যখন Preference
ট্যাপ করা হয়। উদাহরণস্বরূপ, ন্যাভিগেশন পরিচালনা করার জন্য আপনার যদি আরও জটিল যুক্তি থাকে তবে আপনি শ্রোতাকে অন্য Fragment
বা Activity
নেভিগেট করতে ব্যবহার করতে পারেন।
একটি OnPreferenceClickListener
সেট করতে, নিম্নলিখিতগুলির মতো কোড ব্যবহার করুন:
কোটলিন
onClickPreference.setOnPreferenceClickListener({ // Do something. true })
জাভা
onClickPreference.setOnPreferenceClickListener(preference -> { // Do something. return true; });