বেশিরভাগ ক্ষেত্রে, সেটিংস হায়ারার্কি নতুন করে সাজানো তুলনামূলকভাবে
সহজ এবং সাধারণত প্রাসঙ্গিক পছন্দ ও
PreferenceController অন্য XML ফাইলে সরানো হয়। PreferenceController যদি
use(...) ব্যবহার করে, তাহলে আগের SettingsFragment থেকে এটি সরিয়ে
নতুন SettingsFragment-এ যোগ করতে
ভুলবেন না।
এই পৃষ্ঠায় সেটিংসের ক্রম পরিবর্তন করার উদাহরণ দেওয়া হয়েছে যাতে সম্ভাব্য পরিস্থিতি পর্যালোচনা করা যায়।
বেসিক প্রেফারেন্স সরানো
এই উদাহরণে দেখানো হয়েছে যে কীভাবে একটি প্রেফারেন্স স্ক্রিন থেকে অন্যটিতে প্রেফারেন্স সরানো যায়,
যেখানে প্রেফারেন্সে শুধু ডিফল্ট প্রেফারেন্স কন্ট্রোলার থাকে। এই উদাহরণে, আপনি
হোমপেজ প্রেফারেন্স স্ক্রিন থেকে সিস্টেম প্রেফারেন্স স্ক্রিনে
ইউনিট প্রেফারেন্স সরান। এটি করতে, homepage_fragment.xml থেকে নিম্নলিখিত XML সরিয়ে
system_settings_fragment.xml-এর উপযুক্ত লোকেশনে নিয়ে যান:
<Preference android:icon="@drawable/ic_settings_units" android:key="@string/pk_units_settings_entry" android:title="@string/units_settings" settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"> <intent android:targetPackage="com.android.car.settings" android:targetClass="com.android.car.settings.common.CarSettingActivities$UnitsSettingsActivity"/> </Preference>
use(...) ব্যবহার করে এমন একটি পছন্দ সরান
নিম্নলিখিত আরও জটিল উদাহরণটি বিবেচনা করুন যা ডেটা সতর্কতা ও সীমা ফ্র্যাগমেন্টে
থাকা সমস্ত পছন্দকে ডেটা ব্যবহার ফ্র্যাগমেন্টে এক লেভেল উপরে সরিয়ে দেয়, যা
DataWarningAndLimitFragment.java-কে আপডেট করে যাতে কনস্ট্রাকশনের পরে পছন্দ কন্ট্রোলারে তথ্য পাস করার জন্য use পদ্ধতি
অন্তর্ভুক্ত করা যায়।
- প্রাসঙ্গিক XML ফাইলটি
data_usage_fragment.xml-এর মধ্যে আপনার পছন্দের লোকেশনে সরান:<Preference android:key="@string/pk_data_usage_cycle" android:title="@string/app_usage_cycle" settings:controller="com.android.car.settings.datausage.CycleResetDayOfMonthPickerPreferenceController"/> <com.android.car.settings.common.LogicalPreferenceGroup android:key="@string/pk_data_warning_group" settings:controller="com.android.car.settings.datausage.DataWarningPreferenceController"> <SwitchPreference android:key="@string/pk_data_set_warning" android:title="@string/set_data_warning"/> <Preference android:key="@string/pk_data_warning" android:title="@string/data_warning"/> </com.android.car.settings.common.LogicalPreferenceGroup> <com.android.car.settings.common.LogicalPreferenceGroup android:key="@string/pk_data_limit_group" settings:controller="com.android.car.settings.datausage.DataLimitPreferenceController"> <SwitchPreference android:key="@string/pk_data_set_limit" android:title="@string/set_data_limit"/> <Preference android:key="@string/pk_data_limit" android:title="@string/data_limit"/> </com.android.car.settings.common.LogicalPreferenceGroup>
DataWarningAndLimitFragment.java-এ,useপদ্ধতি কীভাবে ব্যবহার করা হয় তা নির্ধারণ করুন।@Override public void onAttach(Context context) { super.onAttach(context); mPolicyEditor = new NetworkPolicyEditor(NetworkPolicyManager.from(context)); mNetworkTemplate = getArguments().getParcelable( NetworkPolicyManager.EXTRA_NETWORK_TEMPLATE); if (mNetworkTemplate == null) { mTelephonyManager = context.getSystemService(TelephonyManager.class); mSubscriptionManager = context.getSystemService(SubscriptionManager.class); mNetworkTemplate = DataUsageUtils.getMobileNetworkTemplate(mTelephonyManager, DataUsageUtils.getDefaultSubscriptionId(mSubscriptionManager)); } // Loads the current policies to the policy editor cache. mPolicyEditor.read(); List<DataWarningAndLimitBasePreferenceController> preferenceControllers = Arrays.asList( use(CycleResetDayOfMonthPickerPreferenceController.class, R.string.pk_data_usage_cycle), use(DataWarningPreferenceController.class, R.string.pk_data_warning_group), use(DataLimitPreferenceController.class, R.string.pk_data_limit_group)); for (DataWarningAndLimitBasePreferenceController preferenceController : preferenceControllers) { preferenceController.setNetworkPolicyEditor(mPolicyEditor); preferenceController.setNetworkTemplate(mNetworkTemplate); } }
এই ক্ষেত্রে,
useপদ্ধতিটি পছন্দ কন্ট্রোলারের জন্য নেটওয়ার্ক নীতি এডিটর এবং নেটওয়ার্ক টেমপ্লেট সেট করে। কারণ, এই উদাহরণে সব পছন্দ এবংonAttachপদ্ধতিতে থাকা সব কোড এই পছন্দ সংক্রান্ত প্যারামিটার সেট করার সাথে প্রাসঙ্গিক, তাই নতুন ফ্র্যাগমেন্টে পুরো পদ্ধতির কন্টেন্ট কপি করা উপযুক্ত হবে। তবে, এটি নির্দিষ্ট পছন্দের উপর নির্ভর করে আলাদা আলাদা হয়। আপনাকে প্রাসঙ্গিক ইনস্ট্যান্স ভেরিয়েবলও সরাতে হবে।তবে, একটি সমস্যা আছে। আসল ফ্র্যাগমেন্টে
NetworkPolicyManager.EXTRA_NETWORK_TEMPLATE-কে আর্গুমেন্ট হিসেবে পাস করার কথা, যা ইনটেন্ট থেকে অ্যাক্টিভিটিতে (প্রদান করা হলে) আসতে হবে।এই প্রয়োজনীয় তথ্য পেতে, হয় একটি
newInstanceমেথড তৈরি করুন এবং টেমপ্লেট উপস্থিত থাকলে তাতে পাস করুন (অন্যথায় নাল পাস করুন) এবং তারপরDataUsageFragment-এর জন্য অ্যাক্টিভিটি আপডেট করুন অথবাgetActivity().getIntent()ব্যবহার করেonAttachমেথডে সরাসরি ইনটেন্ট তথ্য পান। উভয় ক্ষেত্রেই, আপনি উপরে যেভাবে করেছেন, ঠিক সেভাবেই এই পদ্ধতির জন্য প্রয়োজনীয় তথ্য পাস করতে পারবেন।- পুরনো ফ্র্যাগমেন্ট ও XML ফাইল পরিষ্কার করার আগে পুরনো ফ্র্যাগমেন্টে অন্য কোনও নির্ভরতা বা প্রত্যাশিত ইনটেন্ট অ্যাকশন শনাক্ত করুন। এই ক্ষেত্রে, একটি ওভারলে কনফিগ ভ্যালু পুরনো অ্যাক্টিভিটি দেখায়, যা সঠিক অ্যাক্টিভিটি দেখানোর জন্য অবশ্যই আপডেট করতে হবে।
হায়ারার্কিতে একটি পছন্দ স্ক্রিন যোগ করুন
হায়ারার্কিতে নতুন পছন্দ স্ক্রিন যোগ করতে, গাড়ির সেটিংস যোগ করুন দেখুন।
নতুন পছন্দ স্ক্রিন তৈরি করার পরে, উপরের উদাহরণগুলি ব্যবহার করে পছন্দের ক্রমটি আপনার ইচ্ছা মতো সাজান।