বেশিরভাগ অংশের জন্য, সেটিংস শ্রেণিবিন্যাস পুনর্বিন্যাস তুলনামূলকভাবে সহজ এবং সাধারণত প্রাসঙ্গিক পছন্দ এবং 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>
ব্যবহার ব্যবহার করে এমন একটি পছন্দ সরান(...)
নিম্নলিখিত আরও জটিল উদাহরণটি বিবেচনা করুন যা ডেটা সতর্কতা এবং সীমা খণ্ডের সমস্ত পছন্দগুলিকে ডেটা ব্যবহারের খণ্ডে এক স্তরের উপরে নিয়ে যায়, যা 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পদ্ধতিতে অভিপ্রায় তথ্য পান।getActivity().getIntent()উভয় ক্ষেত্রেই, আপনি উপরের মতো এই পদ্ধতির জন্য প্রয়োজনীয় তথ্য পাস করতে পারেন।- পুরানো টুকরো এবং XML ফাইলগুলি পরিষ্কার করার আগে পুরানো ফ্র্যাগমেন্টে অন্য কোনও নির্ভরতা বা প্রত্যাশিত অভিপ্রায় ক্রিয়া সনাক্ত করুন। এই ক্ষেত্রে, একটি ওভারলে কনফিগার মান পুরানো কার্যকলাপ নির্দেশ করে, যা সঠিক কার্যকলাপ নির্দেশ করতে আপডেট করা আবশ্যক।
শ্রেণিবিন্যাসে একটি পছন্দের পর্দা যোগ করুন
শ্রেণিবিন্যাসে একটি নতুন পছন্দের স্ক্রীন যোগ করতে, গাড়ির সেটিংস যোগ করুন দেখুন।
নতুন প্রেফারেন্স স্ক্রীন তৈরি করার পর, পছন্দ অনুযায়ী পছন্দের শ্রেণিবিন্যাস পুনর্বিন্যাস করতে উপরের উদাহরণগুলি ব্যবহার করুন।