27 মার্চ, 2025 থেকে, আমরা AOSP তৈরি করতে এবং অবদান রাখতে aosp-main
এর পরিবর্তে android-latest-release
ব্যবহার করার পরামর্শ দিচ্ছি। আরও তথ্যের জন্য, AOSP-তে পরিবর্তনগুলি দেখুন।
গাড়ির সেটিংস পুনরায় সাজান
সেভ করা পৃষ্ঠা গুছিয়ে রাখতে 'সংগ্রহ' ব্যবহার করুন
আপনার পছন্দ অনুযায়ী কন্টেন্ট সেভ করুন ও সঠিক বিভাগে রাখুন।
বেশিরভাগ অংশের জন্য, সেটিংস শ্রেণিবিন্যাস পুনর্বিন্যাস তুলনামূলকভাবে সহজ এবং সাধারণত প্রাসঙ্গিক পছন্দ এবং 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 ফাইলগুলি পরিষ্কার করার আগে পুরানো ফ্র্যাগমেন্টে অন্য কোনও নির্ভরতা বা প্রত্যাশিত অভিপ্রায় ক্রিয়া সনাক্ত করুন। এই ক্ষেত্রে, একটি ওভারলে কনফিগার মান পুরানো কার্যকলাপ নির্দেশ করে, যা সঠিক কার্যকলাপ নির্দেশ করতে আপডেট করা আবশ্যক।
শ্রেণিবিন্যাসে একটি পছন্দের পর্দা যোগ করুন
শ্রেণিবিন্যাসে একটি নতুন পছন্দের স্ক্রীন যোগ করতে, গাড়ির সেটিংস যোগ করুন দেখুন।
নতুন প্রেফারেন্স স্ক্রীন তৈরি করার পর, পছন্দ অনুযায়ী পছন্দের শ্রেণিবিন্যাস পুনর্বিন্যাস করতে উপরের উদাহরণগুলি ব্যবহার করুন।
এই পৃষ্ঠার কন্টেন্ট ও কোডের নমুনাগুলি Content License-এ বর্ণিত লাইসেন্সের অধীনস্থ। Java এবং OpenJDK হল Oracle এবং/অথবা তার অ্যাফিলিয়েট সংস্থার রেজিস্টার্ড ট্রেডমার্ক।
2025-08-02 UTC-তে শেষবার আপডেট করা হয়েছে।
[[["সহজে বোঝা যায়","easyToUnderstand","thumb-up"],["আমার সমস্যার সমাধান হয়েছে","solvedMyProblem","thumb-up"],["অন্যান্য","otherUp","thumb-up"]],[["এতে আমার প্রয়োজনীয় তথ্য নেই","missingTheInformationINeed","thumb-down"],["খুব জটিল / অনেক ধাপ","tooComplicatedTooManySteps","thumb-down"],["পুরনো","outOfDate","thumb-down"],["অনুবাদ সংক্রান্ত সমস্যা","translationIssue","thumb-down"],["নমুনা / কোড সংক্রান্ত সমস্যা","samplesCodeIssue","thumb-down"],["অন্যান্য","otherDown","thumb-down"]],["2025-08-02 UTC-তে শেষবার আপডেট করা হয়েছে।"],[],[],null,["# Rearrange Car Settings\n\nFor the most part, rearranging the Settings hierarchy is relatively\nstraightforward and typically consists of moving the relevant preference and\n`PreferenceController` to a different XML file. If the\n`PreferenceController` uses `use(...)`, be sure to remove\nit from the previous `SettingsFragment` and add it to the new\n`SettingsFragment`.\n\nThis page provides examples for reordering Settings to review situations that\nmay occur.\n\nMove a basic preference\n-----------------------\n\nThis example explains how to move a preference from one preference screen to another,\nin which the preference has just a default preference controller. In this example, you\nmove the Units preference from the Homepage preference screen into the System preference\nscreen. To do so, move following XML from `homepage_fragment.xml` into the\nappropriate location in `system_settings_fragment.xml`: \n\n```transact-sql\n\u003cPreference\n android:icon=\"@drawable/ic_settings_units\"\n android:key=\"@string/pk_units_settings_entry\"\n android:title=\"@string/units_settings\"\n settings:controller=\"com.android.car.settings.common.DefaultRestrictionsPreferenceController\"\u003e\n \u003cintent android:targetPackage=\"com.android.car.settings\"\n android:targetClass=\"com.android.car.settings.common.CarSettingActivities$UnitsSettingsActivity\"/\u003e\n \u003c/Preference\u003e\n```\n\nMove a preference that uses use(...)\n------------------------------------\n\nConsider the following more complex example that moves all the preferences\nin the Data Warning \\& Limit fragment up one level into the Data Usage fragment, which\nupdates `DataWarningAndLimitFragment.java` to include the `use` method\nto pass information into the preference controllers after construction.\n\n1. Move the relevant XML to the desired location in `data_usage_fragment.xml`: \n\n ```transact-sql\n \u003cPreference\n android:key=\"@string/pk_data_usage_cycle\"\n android:title=\"@string/app_usage_cycle\"\n settings:controller=\"com.android.car.settings.datausage.CycleResetDayOfMonthPickerPreferenceController\"/\u003e\n \u003ccom.android.car.settings.common.LogicalPreferenceGroup\n android:key=\"@string/pk_data_warning_group\"\n settings:controller=\"com.android.car.settings.datausage.DataWarningPreferenceController\"\u003e\n \u003cSwitchPreference\n android:key=\"@string/pk_data_set_warning\"\n android:title=\"@string/set_data_warning\"/\u003e\n \u003cPreference\n android:key=\"@string/pk_data_warning\"\n android:title=\"@string/data_warning\"/\u003e\n \u003c/com.android.car.settings.common.LogicalPreferenceGroup\u003e\n \u003ccom.android.car.settings.common.LogicalPreferenceGroup\n android:key=\"@string/pk_data_limit_group\"\n settings:controller=\"com.android.car.settings.datausage.DataLimitPreferenceController\"\u003e\n \u003cSwitchPreference\n android:key=\"@string/pk_data_set_limit\"\n android:title=\"@string/set_data_limit\"/\u003e\n \u003cPreference\n android:key=\"@string/pk_data_limit\"\n android:title=\"@string/data_limit\"/\u003e\n \u003c/com.android.car.settings.common.LogicalPreferenceGroup\u003e\n ```\n2. In `DataWarningAndLimitFragment.java`, determine how the `use` method is used. \n\n ```transact-sql\n @Override\n public void onAttach(Context context) {\n super.onAttach(context);\n\n mPolicyEditor = new NetworkPolicyEditor(NetworkPolicyManager.from(context));\n mNetworkTemplate = getArguments().getParcelable(\n NetworkPolicyManager.EXTRA_NETWORK_TEMPLATE);\n if (mNetworkTemplate == null) {\n mTelephonyManager = context.getSystemService(TelephonyManager.class);\n mSubscriptionManager = context.getSystemService(SubscriptionManager.class);\n mNetworkTemplate = DataUsageUtils.getMobileNetworkTemplate(mTelephonyManager,\n DataUsageUtils.getDefaultSubscriptionId(mSubscriptionManager));\n }\n\n // Loads the current policies to the policy editor cache.\n mPolicyEditor.read();\n\n List\u003cDataWarningAndLimitBasePreferenceController\u003e preferenceControllers =\n Arrays.asList(\n use(CycleResetDayOfMonthPickerPreferenceController.class,\n R.string.pk_data_usage_cycle),\n use(DataWarningPreferenceController.class, R.string.pk_data_warning_group),\n use(DataLimitPreferenceController.class, R.string.pk_data_limit_group));\n\n for (DataWarningAndLimitBasePreferenceController preferenceController :\n preferenceControllers) {\n preferenceController.setNetworkPolicyEditor(mPolicyEditor);\n preferenceController.setNetworkTemplate(mNetworkTemplate);\n }\n }\n ```\n\n In this case, the `use` method sets the network policy editor\n and network template for the preference controllers. Because this example moves all\n the preferences and all the code in the `onAttach` method is relevant to\n setting these preference parameters, it would be appropriate to copy over the entire\n method contents into the new fragment. However, this varies depending on the\n specific preference. You need to also move over the relevant instance variables.\n\n However, there is a complication. The original fragment expected\n `NetworkPolicyManager.EXTRA_NETWORK_TEMPLATE` to be\n passed in as an argument, which should come in from the intent to the activity\n (when provided).\n\n To get this needed information, either create a `newInstance`\n method and pass in the template when present (otherwise pass in null) and then\n update the activity for the `DataUsageFragment` or get the intent\n information directly in the `onAttach` method by using\n `getActivity().getIntent()`. In either case, you can pass in the\n needed information for this method as you did above.\n3. Identify any other dependencies or expected intent actions in the old fragment before cleaning up the old fragments and XML files. In this case, an [overlay\n config value](https://android.googlesource.com/platform/packages/services/Car/+/refs/heads/android11-release/car_product/overlay/frameworks/base/core/res/res/values/config.xml#98) points to the old activity, which must be updated to point to the correct activity.\n\nAdd a preference screen to the hierarchy\n----------------------------------------\n\nTo add a new preference screen to the hierarchy, see [Add Car Settings](/docs/automotive/hmi/car_settings/add_car_settings).\n\nAfter creating the new preference screen, use the examples above to rearrange the\npreference hierarchy as desired."]]