कार की सेटिंग फिर से व्यवस्थित करें

ज़्यादातर मामलों में, सेटिंग की हैरारकी को फिर से व्यवस्थित किया जाता है यह विकल्प, मुख्य तौर पर आपके काम की प्राथमिकता को दिखाता है और PreferenceController को किसी दूसरी एक्सएमएल फ़ाइल में ट्रांसफ़र करें. अगर PreferenceController, use(...) का इस्तेमाल करता है. इसे ज़रूर हटा दें इसे पिछले SettingsFragment से और नए SettingsFragment.

यह पेज, सेटिंग को फिर से क्रम में लगाने के उदाहरण देता है. इससे, उन स्थितियों की समीक्षा की जा सकती है जिनमें ऐसा हो सकता है.

मूल प्राथमिकता को माइग्रेट करना

इस उदाहरण में, किसी प्राथमिकता को एक से दूसरी स्क्रीन पर ले जाने का तरीका बताया गया है. जिसमें प्राथमिकता में सिर्फ़ डिफ़ॉल्ट प्राथमिकता कंट्रोलर होता है. इस उदाहरण में, इकाइयों की प्राथमिकता को होम पेज की प्राथमिकता स्क्रीन से सिस्टम प्राथमिकता में ले जाएं स्क्रीन. ऐसा करने के लिए, नीचे दिए गए एक्सएमएल को 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 को अपडेट करता है बनाने के बाद जानकारी को प्राथमिकता नियंत्रकों में पास करने के लिए.

  1. काम के एक्सएमएल को 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 बनाएं तरीका और टेंप्लेट में मौजूद होने पर पास करें (अन्यथा शून्य में पास करें) और फिर DataUsageFragment के लिए गतिविधि अपडेट करें या इंटेंट पाएं का उपयोग करके सीधे onAttach विधि में जानकारी getActivity().getIntent(). दोनों ही मामले में, आपको इस तरीके के लिए जानकारी ज़रूरी है.

  3. इससे पहले कि पुराने फ़्रैगमेंट में, किसी अन्य डिपेंडेंसी या अनुमानित इंटेंट ऐक्शन की पहचान करें पुराने फ़्रैगमेंट और एक्सएमएल फ़ाइलों को मिटा सकते हैं. इस मामले में, ओवरले कॉन्फ़िगरेशन वैल्यू पुरानी गतिविधि पर ले जाती है, जिसे अपडेट करके सही गतिविधि.

क्रम में प्राथमिकता वाली स्क्रीन जोड़ें

क्रम में नई प्राथमिकता वाली स्क्रीन जोड़ने के लिए, कार की सेटिंग जोड़ें देखें.

नई प्राथमिकता स्क्रीन बनाने के बाद, ऊपर दिए गए उदाहरणों का उपयोग करके, पसंद के क्रम को टारगेट करें.