إعادة ترتيب إعدادات السيارة

في الغالب، تكون إعادة ترتيب التسلسل الهرمي للإعدادات أمر مباشر وعادةً ما يتكون من نقل التفضيل 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. لتمرير المعلومات إلى وحدات التحكم في التفضيلات بعد الإنشاء.

  1. نقل ملف 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>
    
  2. في 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() في كلتا الحالتين، يمكنك تمرير إلى المعلومات اللازمة لهذه الطريقة كما فعلتَ أعلاه.

  3. حدد أي تبعيات أخرى أو إجراءات النية المتوقعة في الجزء القديم قبل لإزالة الأجزاء القديمة وملفات XML. وفي هذه الحالة، تراكب تشير "قيمة الضبط" إلى النشاط القديم، والذي يجب تعديله للإشارة إلى النشاط الصحيح.

إضافة شاشة تفضيل إلى التسلسل الهرمي

لإضافة شاشة تفضيل جديدة إلى التسلسل الهرمي، راجع إضافة إعدادات السيارة.

بعد إنشاء شاشة التفضيل الجديدة، استخدم الأمثلة أعلاه لإعادة ترتيب التسلسل الهرمي للتفضيل كما تريد.