في الغالب، تكون إعادة ترتيب التسلسل الهرمي للإعدادات
أمر مباشر وعادةً ما يتكون من نقل التفضيل
PreferenceController
إلى ملف XML مختلف. إذا كانت
يتم استخدام use(...)
من قِبل "PreferenceController
"، لذا يُرجى التأكّد من إزالتها.
من SettingsFragment
السابق وإضافتها إلى واجهة
SettingsFragment
تقدم هذه الصفحة أمثلة لإعادة ترتيب "الإعدادات" لمراجعة الحالات التي المخاطرة.
نقل أحد الإعدادات المفضّلة الأساسية
يوضّح هذا المثال كيفية نقل تفضيل من شاشة تفضيل إلى أخرى،
الذي يكون فيه التفضيل مجرد وحدة تحكم تفضيل افتراضية. في هذا المثال،
نقل تفضيل الوحدات من شاشة تفضيل الصفحة الرئيسية إلى تفضيل النظام
الشاشة. لإجراء ذلك، انقل ملف XML التالي من homepage_fragment.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
. وتمريره في القالب عند وجوده (وإلا وإلا في حقل null) ثم تعديل نشاط "DataUsageFragment
" أو الحصول على إجراء المعلومات مباشرةً بطريقةonAttach
باستخدامgetActivity().getIntent()
في كلتا الحالتين، يمكنك تمرير إلى المعلومات اللازمة لهذه الطريقة كما فعلتَ أعلاه. - حدد أي تبعيات أخرى أو إجراءات النية المتوقعة في الجزء القديم قبل لإزالة الأجزاء القديمة وملفات XML. وفي هذه الحالة، تراكب تشير "قيمة الضبط" إلى النشاط القديم، والذي يجب تعديله للإشارة إلى النشاط الصحيح.
إضافة شاشة تفضيل إلى التسلسل الهرمي
لإضافة شاشة تفضيل جديدة إلى التسلسل الهرمي، راجع إضافة إعدادات السيارة.
بعد إنشاء شاشة التفضيل الجديدة، استخدم الأمثلة أعلاه لإعادة ترتيب التسلسل الهرمي للتفضيل كما تريد.