From 03a3b518debfb3870d780a6e29c8f115013cd866 Mon Sep 17 00:00:00 2001 From: Doris Ling Date: Wed, 18 Oct 2017 14:25:01 -0700 Subject: [PATCH] Update preference screen title. - Add missing title to preference screen xml so that they will be used to set the activity title when the fragment is launched. - Also updated some incorrect preference screen titles. - Overrides getTitle() in preference fragments that do not use the preference screen xml. Bug: 64564191 Test: blaze-bin/screenshots/android/i18nscreenshots/i18nscreenshots Change-Id: Id72d5ddf18f0962bc484de8bbd847a2e55d6371e --- AndroidManifest.xml | 1 + ...ccessibility_shortcut_service_settings.xml | 20 +++++++++++++++ res/xml/app_data_usage.xml | 5 ++-- res/xml/app_storage_settings.xml | 7 +++--- res/xml/billing_cycle.xml | 5 ++-- res/xml/bluetooth_device_details_fragment.xml | 2 +- res/xml/bluetooth_pairing_detail.xml | 2 +- res/xml/current_dream_settings.xml | 20 +++++++++++++++ res/xml/data_usage_list.xml | 3 +-- res/xml/data_usage_metered_prefs.xml | 2 +- res/xml/default_assist_settings.xml | 20 +++++++++++++++ res/xml/default_autofill_settings.xml | 20 +++++++++++++++ res/xml/default_browser_settings.xml | 20 +++++++++++++++ res/xml/default_emergency_settings.xml | 20 +++++++++++++++ res/xml/default_home_settings.xml | 20 +++++++++++++++ res/xml/default_phone_settings.xml | 20 +++++++++++++++ res/xml/default_sms_settings.xml | 20 +++++++++++++++ res/xml/default_voice_settings.xml | 20 +++++++++++++++ res/xml/development_tile_settings.xml | 20 +++++++++++++++ res/xml/feature_flags_settings.xml | 20 +++++++++++++++ res/xml/inactive_apps.xml | 8 +++--- res/xml/installed_app_launch_settings.xml | 5 ++-- res/xml/manage_domain_url_settings.xml | 20 +++++++++++++++ res/xml/nfc_payment_settings.xml | 4 ++- res/xml/notification_access_settings.xml | 20 +++++++++++++++ res/xml/picture_in_picture_settings.xml | 20 +++++++++++++++ res/xml/premium_sms_settings.xml | 20 +++++++++++++++ res/xml/process_stats_ui.xml | 2 +- res/xml/tether_prefs.xml | 6 +++-- res/xml/unrestricted_data_access_settings.xml | 20 +++++++++++++++ res/xml/vpn_app_management.xml | 3 +-- res/xml/vr_display_settings.xml | 20 +++++++++++++++ res/xml/vr_listeners_settings.xml | 20 +++++++++++++++ res/xml/webview_app_settings.xml | 20 +++++++++++++++ res/xml/when_to_dream_settings.xml | 20 +++++++++++++++ res/xml/wifi_display_settings.xml | 2 +- res/xml/wifi_p2p_settings.xml | 4 ++- res/xml/wifi_tether_settings.xml | 4 ++- res/xml/zen_access_settings.xml | 20 +++++++++++++++ .../android/settings/DeviceAdminSettings.java | 4 +++ src/com/android/settings/MasterClear.java | 7 ++++++ src/com/android/settings/ResetNetwork.java | 7 ++++++ .../settings/ScreenPinningSettings.java | 3 +++ .../settings/TrustedCredentialsSettings.java | 7 ++++++ .../settings/UserCredentialsSettings.java | 7 ++++++ .../accessibility/AccessibilitySettings.java | 17 ++++++++----- ...cessibilityShortcutPreferenceFragment.java | 10 ++++++-- .../ShortcutServicePickerFragment.java | 6 +++++ .../ToggleAutoclickPreferenceFragment.java | 13 ++++++++-- .../ToggleDaltonizerPreferenceFragment.java | 13 ++++++++-- .../ToggleFeaturePreferenceFragment.java | 25 ++++++++++++++++--- .../ToggleFontSizePreferenceFragment.java | 7 ++++++ .../applications/BackgroundCheckSummary.java | 8 ++++++ .../settings/applications/ConvertToFbe.java | 10 ++++++++ .../applications/InstalledAppDetails.java | 23 ++++++++--------- .../applications/ManageDomainUrls.java | 6 ++++- .../PictureInPictureSettings.java | 9 ++++++- .../applications/PremiumSmsAccess.java | 19 +++++++++++--- .../applications/RunningServices.java | 7 ++++++ .../applications/VrListenerSettings.java | 5 ++++ .../assist/DefaultAssistPicker.java | 5 ++++ .../assist/DefaultVoiceInputPicker.java | 6 +++++ .../defaultapps/DefaultAutofillPicker.java | 8 +++--- .../defaultapps/DefaultBrowserPicker.java | 6 +++++ .../defaultapps/DefaultEmergencyPicker.java | 5 ++++ .../defaultapps/DefaultHomePicker.java | 5 ++++ .../defaultapps/DefaultPhonePicker.java | 6 +++++ .../defaultapps/DefaultSmsPicker.java | 5 ++++ .../ManageApplications.java | 21 +++++++++++++--- .../datausage/DataUsagePreference.java | 18 +++++++++++++ .../datausage/UnrestrictedDataAccess.java | 8 ++++-- .../android/settings/datetime/ZonePicker.java | 4 +++ .../featureflags/FeatureFlagsDashboard.java | 2 +- .../qstile/DevelopmentTileConfigFragment.java | 3 +-- .../settings/display/ScreenZoomSettings.java | 7 ++++++ .../display/VrDisplayPreferencePicker.java | 5 ++++ .../settings/dream/CurrentDreamPicker.java | 7 +++++- .../settings/dream/WhenToDreamPicker.java | 5 ++++ src/com/android/settings/nfc/AndroidBeam.java | 7 ++++++ .../android/settings/nfc/PaymentSettings.java | 14 ++++++++--- .../notification/EmptyTextSettings.java | 16 ++++++++++++ .../NotificationAccessSettings.java | 11 ++++---- .../notification/ZenAccessSettings.java | 13 ++++++---- .../settings/webview/WebViewAppPicker.java | 5 ++++ .../widget/RadioButtonPickerFragment.java | 17 ++++++++++--- .../FeatureFlagsDashboardTest.java | 4 +-- 86 files changed, 838 insertions(+), 93 deletions(-) create mode 100644 res/xml/accessibility_shortcut_service_settings.xml create mode 100644 res/xml/current_dream_settings.xml create mode 100644 res/xml/default_assist_settings.xml create mode 100644 res/xml/default_autofill_settings.xml create mode 100644 res/xml/default_browser_settings.xml create mode 100644 res/xml/default_emergency_settings.xml create mode 100644 res/xml/default_home_settings.xml create mode 100644 res/xml/default_phone_settings.xml create mode 100644 res/xml/default_sms_settings.xml create mode 100644 res/xml/default_voice_settings.xml create mode 100644 res/xml/development_tile_settings.xml create mode 100644 res/xml/feature_flags_settings.xml create mode 100644 res/xml/manage_domain_url_settings.xml create mode 100644 res/xml/notification_access_settings.xml create mode 100644 res/xml/picture_in_picture_settings.xml create mode 100644 res/xml/premium_sms_settings.xml create mode 100644 res/xml/unrestricted_data_access_settings.xml create mode 100644 res/xml/vr_display_settings.xml create mode 100644 res/xml/vr_listeners_settings.xml create mode 100644 res/xml/webview_app_settings.xml create mode 100644 res/xml/when_to_dream_settings.xml create mode 100644 res/xml/zen_access_settings.xml diff --git a/AndroidManifest.xml b/AndroidManifest.xml index e1d22257e43..3362a43222b 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -1325,6 +1325,7 @@ diff --git a/res/xml/accessibility_shortcut_service_settings.xml b/res/xml/accessibility_shortcut_service_settings.xml new file mode 100644 index 00000000000..573939a21b2 --- /dev/null +++ b/res/xml/accessibility_shortcut_service_settings.xml @@ -0,0 +1,20 @@ + + + + diff --git a/res/xml/app_data_usage.xml b/res/xml/app_data_usage.xml index 26a339a1921..3e94135fb4b 100644 --- a/res/xml/app_data_usage.xml +++ b/res/xml/app_data_usage.xml @@ -14,8 +14,9 @@ limitations under the License. --> - + diff --git a/res/xml/app_storage_settings.xml b/res/xml/app_storage_settings.xml index f3f2f757eec..ba18b1ff564 100644 --- a/res/xml/app_storage_settings.xml +++ b/res/xml/app_storage_settings.xml @@ -14,9 +14,10 @@ limitations under the License. --> - + diff --git a/res/xml/billing_cycle.xml b/res/xml/billing_cycle.xml index 8c77ad624ee..7b619792be3 100644 --- a/res/xml/billing_cycle.xml +++ b/res/xml/billing_cycle.xml @@ -14,8 +14,9 @@ limitations under the License. --> - + + android:title="@string/device_details_title"> + android:title="@string/bluetooth_pairing_pref_title"> diff --git a/res/xml/current_dream_settings.xml b/res/xml/current_dream_settings.xml new file mode 100644 index 00000000000..d95e830f523 --- /dev/null +++ b/res/xml/current_dream_settings.xml @@ -0,0 +1,20 @@ + + + + diff --git a/res/xml/data_usage_list.xml b/res/xml/data_usage_list.xml index 64df9c3dba4..41fbff89439 100644 --- a/res/xml/data_usage_list.xml +++ b/res/xml/data_usage_list.xml @@ -14,8 +14,7 @@ limitations under the License. --> - + diff --git a/res/xml/data_usage_metered_prefs.xml b/res/xml/data_usage_metered_prefs.xml index aca87fb6571..ef0faf225bb 100644 --- a/res/xml/data_usage_metered_prefs.xml +++ b/res/xml/data_usage_metered_prefs.xml @@ -15,7 +15,7 @@ --> + android:title="@string/network_restrictions"> + + + diff --git a/res/xml/default_autofill_settings.xml b/res/xml/default_autofill_settings.xml new file mode 100644 index 00000000000..ecf0877788b --- /dev/null +++ b/res/xml/default_autofill_settings.xml @@ -0,0 +1,20 @@ + + + + diff --git a/res/xml/default_browser_settings.xml b/res/xml/default_browser_settings.xml new file mode 100644 index 00000000000..a319a7cc4a7 --- /dev/null +++ b/res/xml/default_browser_settings.xml @@ -0,0 +1,20 @@ + + + + diff --git a/res/xml/default_emergency_settings.xml b/res/xml/default_emergency_settings.xml new file mode 100644 index 00000000000..db418ebb786 --- /dev/null +++ b/res/xml/default_emergency_settings.xml @@ -0,0 +1,20 @@ + + + + diff --git a/res/xml/default_home_settings.xml b/res/xml/default_home_settings.xml new file mode 100644 index 00000000000..136f8cc77b4 --- /dev/null +++ b/res/xml/default_home_settings.xml @@ -0,0 +1,20 @@ + + + + diff --git a/res/xml/default_phone_settings.xml b/res/xml/default_phone_settings.xml new file mode 100644 index 00000000000..1ae3ab12b54 --- /dev/null +++ b/res/xml/default_phone_settings.xml @@ -0,0 +1,20 @@ + + + + diff --git a/res/xml/default_sms_settings.xml b/res/xml/default_sms_settings.xml new file mode 100644 index 00000000000..0a8bcc3231b --- /dev/null +++ b/res/xml/default_sms_settings.xml @@ -0,0 +1,20 @@ + + + + diff --git a/res/xml/default_voice_settings.xml b/res/xml/default_voice_settings.xml new file mode 100644 index 00000000000..f75b5ed4271 --- /dev/null +++ b/res/xml/default_voice_settings.xml @@ -0,0 +1,20 @@ + + + + diff --git a/res/xml/development_tile_settings.xml b/res/xml/development_tile_settings.xml new file mode 100644 index 00000000000..f0f71c0e6f3 --- /dev/null +++ b/res/xml/development_tile_settings.xml @@ -0,0 +1,20 @@ + + + + diff --git a/res/xml/feature_flags_settings.xml b/res/xml/feature_flags_settings.xml new file mode 100644 index 00000000000..db652ff8100 --- /dev/null +++ b/res/xml/feature_flags_settings.xml @@ -0,0 +1,20 @@ + + + + diff --git a/res/xml/inactive_apps.xml b/res/xml/inactive_apps.xml index 27fda55497f..6f93bdb7128 100644 --- a/res/xml/inactive_apps.xml +++ b/res/xml/inactive_apps.xml @@ -4,9 +4,9 @@ Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at - + http://www.apache.org/licenses/LICENSE-2.0 - + Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -14,7 +14,9 @@ limitations under the License. --> - + diff --git a/res/xml/installed_app_launch_settings.xml b/res/xml/installed_app_launch_settings.xml index ac77be14831..a2a0ca4bde5 100644 --- a/res/xml/installed_app_launch_settings.xml +++ b/res/xml/installed_app_launch_settings.xml @@ -14,8 +14,9 @@ limitations under the License. --> - + diff --git a/res/xml/manage_domain_url_settings.xml b/res/xml/manage_domain_url_settings.xml new file mode 100644 index 00000000000..e4e4e474eaa --- /dev/null +++ b/res/xml/manage_domain_url_settings.xml @@ -0,0 +1,20 @@ + + + + diff --git a/res/xml/nfc_payment_settings.xml b/res/xml/nfc_payment_settings.xml index 9b47dda1c08..9a5185c4839 100644 --- a/res/xml/nfc_payment_settings.xml +++ b/res/xml/nfc_payment_settings.xml @@ -14,5 +14,7 @@ limitations under the License. --> - + diff --git a/res/xml/notification_access_settings.xml b/res/xml/notification_access_settings.xml new file mode 100644 index 00000000000..1300140bb2b --- /dev/null +++ b/res/xml/notification_access_settings.xml @@ -0,0 +1,20 @@ + + + + diff --git a/res/xml/picture_in_picture_settings.xml b/res/xml/picture_in_picture_settings.xml new file mode 100644 index 00000000000..b7091df374d --- /dev/null +++ b/res/xml/picture_in_picture_settings.xml @@ -0,0 +1,20 @@ + + + + diff --git a/res/xml/premium_sms_settings.xml b/res/xml/premium_sms_settings.xml new file mode 100644 index 00000000000..7bcf11e4661 --- /dev/null +++ b/res/xml/premium_sms_settings.xml @@ -0,0 +1,20 @@ + + + + diff --git a/res/xml/process_stats_ui.xml b/res/xml/process_stats_ui.xml index ba9066eb2f9..84dccabab3b 100644 --- a/res/xml/process_stats_ui.xml +++ b/res/xml/process_stats_ui.xml @@ -16,7 +16,7 @@ + android:title="@string/memory_usage_apps"> - + + + + diff --git a/res/xml/vpn_app_management.xml b/res/xml/vpn_app_management.xml index c044a58a9f9..2cf14984f0e 100644 --- a/res/xml/vpn_app_management.xml +++ b/res/xml/vpn_app_management.xml @@ -15,8 +15,7 @@ --> + xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"> + + + diff --git a/res/xml/vr_listeners_settings.xml b/res/xml/vr_listeners_settings.xml new file mode 100644 index 00000000000..1954596385b --- /dev/null +++ b/res/xml/vr_listeners_settings.xml @@ -0,0 +1,20 @@ + + + + diff --git a/res/xml/webview_app_settings.xml b/res/xml/webview_app_settings.xml new file mode 100644 index 00000000000..c7a611ace8b --- /dev/null +++ b/res/xml/webview_app_settings.xml @@ -0,0 +1,20 @@ + + + + diff --git a/res/xml/when_to_dream_settings.xml b/res/xml/when_to_dream_settings.xml new file mode 100644 index 00000000000..7b91a34b322 --- /dev/null +++ b/res/xml/when_to_dream_settings.xml @@ -0,0 +1,20 @@ + + + + diff --git a/res/xml/wifi_display_settings.xml b/res/xml/wifi_display_settings.xml index 81fb7012591..2be31d2f7a5 100644 --- a/res/xml/wifi_display_settings.xml +++ b/res/xml/wifi_display_settings.xml @@ -15,6 +15,6 @@ --> + android:title="@string/wifi_display_settings_title"> diff --git a/res/xml/wifi_p2p_settings.xml b/res/xml/wifi_p2p_settings.xml index 0bdc1cf75b2..405d0810c81 100644 --- a/res/xml/wifi_p2p_settings.xml +++ b/res/xml/wifi_p2p_settings.xml @@ -14,7 +14,9 @@ limitations under the License. --> - + diff --git a/res/xml/wifi_tether_settings.xml b/res/xml/wifi_tether_settings.xml index feed2680e80..d6b8a25d501 100644 --- a/res/xml/wifi_tether_settings.xml +++ b/res/xml/wifi_tether_settings.xml @@ -15,7 +15,9 @@ limitations under the License. --> - + + + + diff --git a/src/com/android/settings/DeviceAdminSettings.java b/src/com/android/settings/DeviceAdminSettings.java index 4ae900ae86d..00f4d9cbec3 100644 --- a/src/com/android/settings/DeviceAdminSettings.java +++ b/src/com/android/settings/DeviceAdminSettings.java @@ -49,6 +49,7 @@ import android.widget.ListView; import android.widget.TextView; import com.android.internal.logging.nano.MetricsProto; +import com.android.settings.core.InstrumentedPreferenceFragment; import com.android.settings.core.instrumentation.Instrumentable; import com.android.settings.core.instrumentation.VisibilityLoggerMixin; @@ -136,6 +137,9 @@ public class DeviceAdminSettings extends ListFragment implements Instrumentable super.onActivityCreated(savedInstanceState); setHasOptionsMenu(true); Utils.forceCustomPadding(getListView(), true /* additive padding */); + if (InstrumentedPreferenceFragment.usePreferenceScreenTitle()) { + getActivity().setTitle(R.string.manage_device_admin); + } } @Override diff --git a/src/com/android/settings/MasterClear.java b/src/com/android/settings/MasterClear.java index 2c9701832ee..bac0a619456 100644 --- a/src/com/android/settings/MasterClear.java +++ b/src/com/android/settings/MasterClear.java @@ -21,6 +21,7 @@ import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; import android.accounts.Account; import android.accounts.AccountManager; import android.accounts.AuthenticatorDescription; +import android.annotation.StringRes; import android.app.Activity; import android.content.ComponentName; import android.content.ContentResolver; @@ -91,6 +92,12 @@ public class MasterClear extends OptionsMenuFragment { } }; + @Override + @StringRes + protected int getTitle() { + return R.string.master_clear_title; + } + /** * Keyguard validation is run using the standard {@link ConfirmLockPattern} * component as a subactivity diff --git a/src/com/android/settings/ResetNetwork.java b/src/com/android/settings/ResetNetwork.java index 1529e777f74..b5b8a183377 100644 --- a/src/com/android/settings/ResetNetwork.java +++ b/src/com/android/settings/ResetNetwork.java @@ -16,6 +16,7 @@ package com.android.settings; +import android.annotation.StringRes; import android.app.Activity; import android.content.Intent; import android.content.res.Resources; @@ -63,6 +64,12 @@ public class ResetNetwork extends OptionsMenuFragment { private Spinner mSubscriptionSpinner; private Button mInitiateButton; + @Override + @StringRes + protected int getTitle() { + return R.string.reset_network_title; + } + /** * Keyguard validation is run using the standard {@link ConfirmLockPattern} * component as a subactivity diff --git a/src/com/android/settings/ScreenPinningSettings.java b/src/com/android/settings/ScreenPinningSettings.java index 5209cc745b4..68050b1dde1 100644 --- a/src/com/android/settings/ScreenPinningSettings.java +++ b/src/com/android/settings/ScreenPinningSettings.java @@ -65,6 +65,9 @@ public class ScreenPinningSettings extends SettingsPreferenceFragment super.onActivityCreated(savedInstanceState); final SettingsActivity activity = (SettingsActivity) getActivity(); + if (usePreferenceScreenTitle()) { + activity.setTitle(R.string.screen_pinning_title); + } mLockPatternUtils = new LockPatternUtils(activity); diff --git a/src/com/android/settings/TrustedCredentialsSettings.java b/src/com/android/settings/TrustedCredentialsSettings.java index 587e814e2f8..12524b9bd00 100644 --- a/src/com/android/settings/TrustedCredentialsSettings.java +++ b/src/com/android/settings/TrustedCredentialsSettings.java @@ -20,6 +20,7 @@ import static android.widget.LinearLayout.LayoutParams.MATCH_PARENT; import static android.widget.LinearLayout.LayoutParams.WRAP_CONTENT; import android.animation.LayoutTransition; +import android.annotation.StringRes; import android.annotation.UiThread; import android.app.Activity; import android.app.KeyguardManager; @@ -90,6 +91,12 @@ public class TrustedCredentialsSettings extends OptionsMenuFragment private static final String USER_ACTION = "com.android.settings.TRUSTED_CREDENTIALS_USER"; private static final int REQUEST_CONFIRM_CREDENTIALS = 1; + @Override + @StringRes + protected int getTitle() { + return R.string.trusted_credentials; + } + @Override public int getMetricsCategory() { return MetricsEvent.TRUSTED_CREDENTIALS; diff --git a/src/com/android/settings/UserCredentialsSettings.java b/src/com/android/settings/UserCredentialsSettings.java index 6cf1ae0a54c..f34b7a771cd 100644 --- a/src/com/android/settings/UserCredentialsSettings.java +++ b/src/com/android/settings/UserCredentialsSettings.java @@ -18,6 +18,7 @@ package com.android.settings; import android.annotation.LayoutRes; import android.annotation.Nullable; +import android.annotation.StringRes; import android.app.AlertDialog; import android.app.Dialog; import android.app.DialogFragment; @@ -84,6 +85,12 @@ public class UserCredentialsSettings extends SettingsPreferenceFragment } } + @Override + @StringRes + protected int getTitle() { + return R.string.user_credentials; + } + protected void announceRemoval(String alias) { if (!isAdded()) { return; diff --git a/src/com/android/settings/accessibility/AccessibilitySettings.java b/src/com/android/settings/accessibility/AccessibilitySettings.java index fd48c39f5bd..0fbf5fa09ff 100644 --- a/src/com/android/settings/accessibility/AccessibilitySettings.java +++ b/src/com/android/settings/accessibility/AccessibilitySettings.java @@ -20,6 +20,7 @@ import android.accessibilityservice.AccessibilityServiceInfo; import android.app.admin.DevicePolicyManager; import android.content.ComponentName; import android.content.Context; +import android.content.pm.ResolveInfo; import android.content.pm.ServiceInfo; import android.content.res.Resources; import android.graphics.drawable.Drawable; @@ -118,6 +119,7 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements static final String EXTRA_PREFERENCE_KEY = "preference_key"; static final String EXTRA_CHECKED = "checked"; static final String EXTRA_TITLE = "title"; + static final String EXTRA_RESOLVE_INFO = "resolve_info"; static final String EXTRA_SUMMARY = "summary"; static final String EXTRA_SETTINGS_TITLE = "settings_title"; static final String EXTRA_COMPONENT_NAME = "component_name"; @@ -464,23 +466,23 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements } for (int i = 0, count = installedServices.size(); i < count; ++i) { - AccessibilityServiceInfo info = installedServices.get(i); + final AccessibilityServiceInfo info = installedServices.get(i); + final ResolveInfo resolveInfo = info.getResolveInfo(); RestrictedPreference preference = new RestrictedPreference(downloadedServicesCategory.getContext()); - String title = info.getResolveInfo().loadLabel(getPackageManager()).toString(); + final String title = resolveInfo.loadLabel(getPackageManager()).toString(); Drawable icon; - if (info.getResolveInfo().getIconResource() == 0) { + if (resolveInfo.getIconResource() == 0) { icon = ContextCompat.getDrawable(getContext(), R.mipmap.ic_accessibility_generic); } else { - icon = info.getResolveInfo().loadIcon(getPackageManager()); + icon = resolveInfo.loadIcon(getPackageManager()); } - ServiceInfo serviceInfo = info.getResolveInfo().serviceInfo; + ServiceInfo serviceInfo = resolveInfo.serviceInfo; String packageName = serviceInfo.packageName; ComponentName componentName = new ComponentName(packageName, serviceInfo.name); - String componentNameKey = componentName.flattenToString(); preference.setKey(componentName.flattenToString()); @@ -520,6 +522,9 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements extras.putString(EXTRA_PREFERENCE_KEY, preference.getKey()); extras.putBoolean(EXTRA_CHECKED, serviceEnabled); extras.putString(EXTRA_TITLE, title); + if (usePreferenceScreenTitle()) { + extras.putParcelable(EXTRA_RESOLVE_INFO, resolveInfo); + } String description = info.loadDescription(getPackageManager()); if (TextUtils.isEmpty(description)) { diff --git a/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceFragment.java b/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceFragment.java index 4e95cadc1e0..0f6bdd70d2f 100644 --- a/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceFragment.java +++ b/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceFragment.java @@ -24,7 +24,6 @@ import android.os.UserHandle; import android.provider.Settings; import android.support.v14.preference.SwitchPreference; import android.support.v7.preference.Preference; -import android.text.TextUtils; import android.view.accessibility.AccessibilityManager; import android.widget.Switch; @@ -60,7 +59,9 @@ public class AccessibilityShortcutPreferenceFragment extends ToggleFeaturePrefer public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - addPreferencesFromResource(R.xml.accessibility_shortcut_settings); + if (!usePreferenceScreenTitle()) { + addPreferencesFromResource(R.xml.accessibility_shortcut_settings); + } mServicePreference = findPreference(SHORTCUT_SERVICE_KEY); mOnLockScreenSwitchPreference = (SwitchPreference) findPreference(ON_LOCK_SCREEN_KEY); mOnLockScreenSwitchPreference.setOnPreferenceChangeListener((Preference p, Object o) -> { @@ -79,6 +80,11 @@ public class AccessibilityShortcutPreferenceFragment extends ToggleFeaturePrefer updatePreferences(); } + @Override + protected int getPreferenceScreenResId() { + return R.xml.accessibility_shortcut_settings; + } + @Override protected void onInstallSwitchBarToggleSwitch() { super.onInstallSwitchBarToggleSwitch(); diff --git a/src/com/android/settings/accessibility/ShortcutServicePickerFragment.java b/src/com/android/settings/accessibility/ShortcutServicePickerFragment.java index f66a5e2256d..5b0e76d631e 100644 --- a/src/com/android/settings/accessibility/ShortcutServicePickerFragment.java +++ b/src/com/android/settings/accessibility/ShortcutServicePickerFragment.java @@ -34,6 +34,7 @@ import android.text.TextUtils; import android.view.accessibility.AccessibilityManager; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; +import com.android.settings.R; import com.android.settings.applications.defaultapps.DefaultAppInfo; import com.android.settings.applications.defaultapps.DefaultAppPickerFragment; import com.android.settings.core.instrumentation.InstrumentedDialogFragment; @@ -53,6 +54,11 @@ public class ShortcutServicePickerFragment extends DefaultAppPickerFragment { return MetricsEvent.ACCESSIBILITY_TOGGLE_GLOBAL_GESTURE; } + @Override + protected int getPreferenceScreenResId() { + return R.xml.accessibility_shortcut_service_settings; + } + @Override protected List getCandidates() { final Context context = getContext(); diff --git a/src/com/android/settings/accessibility/ToggleAutoclickPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleAutoclickPreferenceFragment.java index 16df03e48e4..5fa38e1e872 100644 --- a/src/com/android/settings/accessibility/ToggleAutoclickPreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleAutoclickPreferenceFragment.java @@ -109,11 +109,18 @@ public class ToggleAutoclickPreferenceFragment extends ToggleFeaturePreferenceFr return R.string.help_url_autoclick; } + @Override + protected int getPreferenceScreenResId() { + return R.xml.accessibility_autoclick_settings; + } + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - addPreferencesFromResource(R.xml.accessibility_autoclick_settings); + if (!usePreferenceScreenTitle()) { + addPreferencesFromResource(R.xml.accessibility_autoclick_settings); + } int delay = Settings.Secure.getInt( getContentResolver(), Settings.Secure.ACCESSIBILITY_AUTOCLICK_DELAY, @@ -153,7 +160,9 @@ public class ToggleAutoclickPreferenceFragment extends ToggleFeaturePreferenceFr public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - setTitle(getString(R.string.accessibility_autoclick_preference_title)); + if (!usePreferenceScreenTitle()) { + setTitle(getString(R.string.accessibility_autoclick_preference_title)); + } } @Override diff --git a/src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java index 64d38af6095..6ee721708a1 100644 --- a/src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java @@ -50,7 +50,9 @@ public class ToggleDaltonizerPreferenceFragment extends ToggleFeaturePreferenceF public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - addPreferencesFromResource(R.xml.accessibility_daltonizer_settings); + if (!usePreferenceScreenTitle()) { + addPreferencesFromResource(R.xml.accessibility_daltonizer_settings); + } mType = (ListPreference) findPreference("type"); @@ -61,6 +63,11 @@ public class ToggleDaltonizerPreferenceFragment extends ToggleFeaturePreferenceF initPreferences(); } + @Override + protected int getPreferenceScreenResId() { + return R.xml.accessibility_daltonizer_settings; + } + @Override protected void onPreferenceToggled(String preferenceKey, boolean enabled) { Settings.Secure.putInt(getContentResolver(), ENABLED, enabled ? 1 : 0); @@ -80,7 +87,9 @@ public class ToggleDaltonizerPreferenceFragment extends ToggleFeaturePreferenceF public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - setTitle(getString(R.string.accessibility_display_daltonizer_preference_title)); + if (!usePreferenceScreenTitle()) { + setTitle(getString(R.string.accessibility_display_daltonizer_preference_title)); + } } @Override diff --git a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java index f66fb4dde36..213e585d510 100644 --- a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java @@ -17,6 +17,7 @@ package com.android.settings.accessibility; import android.content.Intent; +import android.content.pm.ResolveInfo; import android.os.Bundle; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceScreen; @@ -49,9 +50,14 @@ public abstract class ToggleFeaturePreferenceFragment @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - PreferenceScreen preferenceScreen = getPreferenceManager().createPreferenceScreen( - getActivity()); - setPreferenceScreen(preferenceScreen); + final int resId = getPreferenceScreenResId(); + if (usePreferenceScreenTitle() && resId > 0) { + addPreferencesFromResource(resId); + } else { + PreferenceScreen preferenceScreen = getPreferenceManager().createPreferenceScreen( + getActivity()); + setPreferenceScreen(preferenceScreen); + } } @Override @@ -98,6 +104,13 @@ public abstract class ToggleFeaturePreferenceFragment // Implement this to reset a checked listener. } + /** + * Get the res id for static preference xml for this fragment. + */ + protected int getPreferenceScreenResId() { + return -1; + } + private void installActionBarToggleSwitch() { mSwitchBar.show(); onInstallSwitchBarToggleSwitch(); @@ -124,7 +137,11 @@ public abstract class ToggleFeaturePreferenceFragment } // Title. - if (arguments.containsKey(AccessibilitySettings.EXTRA_TITLE)) { + if (usePreferenceScreenTitle() + && arguments.containsKey(AccessibilitySettings.EXTRA_RESOLVE_INFO)) { + ResolveInfo info = arguments.getParcelable(AccessibilitySettings.EXTRA_RESOLVE_INFO); + getActivity().setTitle(info.loadLabel(getPackageManager()).toString()); + } else if (arguments.containsKey(AccessibilitySettings.EXTRA_TITLE)) { setTitle(arguments.getString(AccessibilitySettings.EXTRA_TITLE)); } diff --git a/src/com/android/settings/accessibility/ToggleFontSizePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleFontSizePreferenceFragment.java index c200d171b72..dbd269a38d5 100644 --- a/src/com/android/settings/accessibility/ToggleFontSizePreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleFontSizePreferenceFragment.java @@ -17,6 +17,7 @@ package com.android.settings.accessibility; import android.annotation.Nullable; +import android.annotation.StringRes; import android.content.ContentResolver; import android.content.res.Configuration; import android.content.res.Resources; @@ -54,6 +55,12 @@ public class ToggleFontSizePreferenceFragment extends PreviewSeekBarPreferenceFr } } + @Override + @StringRes + protected int getTitle() { + return R.string.title_font_size; + } + @Override protected Configuration createConfig(Configuration origConfig, int index) { // Populate the sample layouts. diff --git a/src/com/android/settings/applications/BackgroundCheckSummary.java b/src/com/android/settings/applications/BackgroundCheckSummary.java index dd5c89c4a0b..1b8a787b778 100644 --- a/src/com/android/settings/applications/BackgroundCheckSummary.java +++ b/src/com/android/settings/applications/BackgroundCheckSummary.java @@ -16,6 +16,7 @@ package com.android.settings.applications; +import android.annotation.StringRes; import android.app.FragmentTransaction; import android.os.Bundle; import android.preference.PreferenceFrameLayout; @@ -57,4 +58,11 @@ public class BackgroundCheckSummary extends InstrumentedPreferenceFragment { return rootView; } + + @Override + @StringRes + protected int getTitle() { + return R.string.background_check_pref; + } + } diff --git a/src/com/android/settings/applications/ConvertToFbe.java b/src/com/android/settings/applications/ConvertToFbe.java index c5e6d771e6d..192cd14b860 100644 --- a/src/com/android/settings/applications/ConvertToFbe.java +++ b/src/com/android/settings/applications/ConvertToFbe.java @@ -15,6 +15,7 @@ */ package com.android.settings.applications; +import android.annotation.Nullable; import android.app.Activity; import android.content.Intent; import android.content.res.Resources; @@ -28,6 +29,7 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; import com.android.settings.SettingsActivity; import com.android.settings.core.InstrumentedFragment; +import com.android.settings.core.InstrumentedPreferenceFragment; import com.android.settings.password.ChooseLockSettingsHelper; /* Class to prompt for conversion of userdata to file based encryption @@ -44,6 +46,14 @@ public class ConvertToFbe extends InstrumentedFragment { res.getText(R.string.convert_to_file_encryption)); } + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + if (InstrumentedPreferenceFragment.usePreferenceScreenTitle()) { + getActivity().setTitle(R.string.convert_to_file_encryption); + } + } + @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { diff --git a/src/com/android/settings/applications/InstalledAppDetails.java b/src/com/android/settings/applications/InstalledAppDetails.java index ccd91fdbcc7..1df3aef3688 100755 --- a/src/com/android/settings/applications/InstalledAppDetails.java +++ b/src/com/android/settings/applications/InstalledAppDetails.java @@ -930,11 +930,11 @@ public class InstalledAppDetails extends AppInfoBase } } - private void startAppInfoFragment(Class fragment, CharSequence title) { + private void startAppInfoFragment(Class fragment, int title) { startAppInfoFragment(fragment, title, this, mAppEntry); } - public static void startAppInfoFragment(Class fragment, CharSequence title, + public static void startAppInfoFragment(Class fragment, int title, SettingsPreferenceFragment caller, AppEntry appEntry) { // start new fragment to display extended information Bundle args = new Bundle(); @@ -942,7 +942,7 @@ public class InstalledAppDetails extends AppInfoBase args.putInt(ARG_PACKAGE_UID, appEntry.info.uid); SettingsActivity sa = (SettingsActivity) caller.getActivity(); - sa.startPreferencePanel(caller, fragment.getName(), args, -1, title, caller, + sa.startPreferencePanel(caller, fragment.getName(), args, title, null, caller, SUB_INFO_FRAGMENT); } @@ -1018,19 +1018,18 @@ public class InstalledAppDetails extends AppInfoBase @Override public boolean onPreferenceClick(Preference preference) { if (preference == mStoragePreference) { - startAppInfoFragment(AppStorageSettings.class, mStoragePreference.getTitle()); + startAppInfoFragment(AppStorageSettings.class, R.string.storage_settings); } else if (preference == mNotificationPreference) { - startAppInfoFragment(AppNotificationSettings.class, - getString(R.string.app_notifications_title)); + startAppInfoFragment(AppNotificationSettings.class, R.string.app_notifications_title); } else if (preference == mPermissionsPreference) { startManagePermissionsActivity(); } else if (preference == mLaunchPreference) { - startAppInfoFragment(AppLaunchSettings.class, mLaunchPreference.getTitle()); + startAppInfoFragment(AppLaunchSettings.class, R.string.launch_by_default); } else if (preference == mMemoryPreference) { ProcessStatsBase.launchMemoryDetail((SettingsActivity) getActivity(), mStatsManager.getMemInfo(), mStats, false); } else if (preference == mDataPreference) { - startAppInfoFragment(AppDataUsage.class, getString(R.string.app_data_usage)); + startAppInfoFragment(AppDataUsage.class, R.string.app_data_usage); } else if (preference == mBatteryPreference) { if (isBatteryStatsAvailable()) { BatteryEntry entry = new BatteryEntry(getContext(), null, mUserManager, mSipper); @@ -1109,8 +1108,7 @@ public class InstalledAppDetails extends AppInfoBase pref.setOnPreferenceClickListener(new OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { - startAppInfoFragment(DrawOverlayDetails.class, - getString(R.string.draw_overlay)); + startAppInfoFragment(DrawOverlayDetails.class, R.string.draw_overlay); return true; } }); @@ -1123,8 +1121,7 @@ public class InstalledAppDetails extends AppInfoBase pref.setOnPreferenceClickListener(new OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { - startAppInfoFragment(WriteSettingsDetails.class, - getString(R.string.write_settings)); + startAppInfoFragment(WriteSettingsDetails.class, R.string.write_settings); return true; } }); @@ -1154,7 +1151,7 @@ public class InstalledAppDetails extends AppInfoBase @Override public boolean onPreferenceClick(Preference preference) { startAppInfoFragment(ExternalSourcesDetails.class, - getString(R.string.install_other_apps)); + R.string.install_other_apps); return true; } }); diff --git a/src/com/android/settings/applications/ManageDomainUrls.java b/src/com/android/settings/applications/ManageDomainUrls.java index b9e251cb289..ce919e118fb 100644 --- a/src/com/android/settings/applications/ManageDomainUrls.java +++ b/src/com/android/settings/applications/ManageDomainUrls.java @@ -63,7 +63,11 @@ public class ManageDomainUrls extends SettingsPreferenceFragment public void onCreate(Bundle icicle) { super.onCreate(icicle); setAnimationAllowed(true); - setPreferenceScreen(getPreferenceManager().createPreferenceScreen(getContext())); + if (usePreferenceScreenTitle()) { + addPreferencesFromResource(R.xml.manage_domain_url_settings); + } else { + setPreferenceScreen(getPreferenceManager().createPreferenceScreen(getContext())); + } mApplicationsState = ApplicationsState.getInstance( (Application) getContext().getApplicationContext()); mSession = mApplicationsState.newSession(this, getLifecycle()); diff --git a/src/com/android/settings/applications/PictureInPictureSettings.java b/src/com/android/settings/applications/PictureInPictureSettings.java index 5569a4ef785..9b8a897ee12 100644 --- a/src/com/android/settings/applications/PictureInPictureSettings.java +++ b/src/com/android/settings/applications/PictureInPictureSettings.java @@ -147,7 +147,9 @@ public class PictureInPictureSettings extends EmptyTextSettings { mPackageManager = new PackageManagerWrapper(mContext.getPackageManager()); mUserManager = new UserManagerWrapper(mContext.getSystemService(UserManager.class)); mIconDrawableFactory = IconDrawableFactory.newInstance(mContext); - setPreferenceScreen(getPreferenceManager().createPreferenceScreen(mContext)); + if (!usePreferenceScreenTitle()) { + setPreferenceScreen(getPreferenceManager().createPreferenceScreen(mContext)); + } } @Override @@ -198,6 +200,11 @@ public class PictureInPictureSettings extends EmptyTextSettings { setEmptyText(R.string.picture_in_picture_empty_text); } + @Override + protected int getPreferenceScreenResId() { + return R.xml.picture_in_picture_settings; + } + @Override public int getMetricsCategory() { return MetricsEvent.SETTINGS_MANAGE_PICTURE_IN_PICTURE; diff --git a/src/com/android/settings/applications/PremiumSmsAccess.java b/src/com/android/settings/applications/PremiumSmsAccess.java index 70bc17c115c..94945a986c0 100644 --- a/src/com/android/settings/applications/PremiumSmsAccess.java +++ b/src/com/android/settings/applications/PremiumSmsAccess.java @@ -80,6 +80,11 @@ public class PremiumSmsAccess extends EmptyTextSettings implements Callback, Cal super.onDestroy(); } + @Override + protected int getPreferenceScreenResId() { + return R.xml.premium_sms_settings; + } + @Override public int getMetricsCategory() { return MetricsProto.MetricsEvent.PREMIUM_SMS_ACCESS; @@ -119,8 +124,14 @@ public class PremiumSmsAccess extends EmptyTextSettings implements Callback, Cal if (apps == null) return; setEmptyText(R.string.premium_sms_none); setLoading(false, true); - final PreferenceScreen screen = getPreferenceManager().createPreferenceScreen( - getPrefContext()); + final PreferenceScreen screen; + if (usePreferenceScreenTitle()) { + screen = getPreferenceScreen(); + screen.removeAll(); + } else { + screen = getPreferenceManager().createPreferenceScreen(getPrefContext()); + } + screen.setOrderingAsAdded(true); for (int i = 0; i < apps.size(); i++) { @@ -137,7 +148,9 @@ public class PremiumSmsAccess extends EmptyTextSettings implements Callback, Cal screen.addPreference(summary); } - setPreferenceScreen(screen); + if (!usePreferenceScreenTitle()) { + setPreferenceScreen(screen); + } } private void update() { diff --git a/src/com/android/settings/applications/RunningServices.java b/src/com/android/settings/applications/RunningServices.java index 634fefdb9f9..c79b7049d7e 100644 --- a/src/com/android/settings/applications/RunningServices.java +++ b/src/com/android/settings/applications/RunningServices.java @@ -15,6 +15,7 @@ */ package com.android.settings.applications; +import android.annotation.StringRes; import android.os.Bundle; import android.view.LayoutInflater; import android.view.Menu; @@ -108,6 +109,12 @@ public class RunningServices extends SettingsPreferenceFragment { mOptionsMenu.findItem(SHOW_BACKGROUND_PROCESSES).setVisible(!showingBackground); } + @Override + @StringRes + protected int getTitle() { + return R.string.runningservices_settings_title; + } + @Override public int getMetricsCategory() { return MetricsEvent.RUNNING_SERVICES; diff --git a/src/com/android/settings/applications/VrListenerSettings.java b/src/com/android/settings/applications/VrListenerSettings.java index 99340b19170..e40e3f9fe6f 100644 --- a/src/com/android/settings/applications/VrListenerSettings.java +++ b/src/com/android/settings/applications/VrListenerSettings.java @@ -58,6 +58,11 @@ public class VrListenerSettings extends ManagedServiceSettings { return super.setEnabled(service, title, enable); } + @Override + protected int getPreferenceScreenResId() { + return R.xml.vr_listeners_settings; + } + @VisibleForTesting void logSpecialPermissionChange(boolean enable, String packageName) { int logCategory = enable ? MetricsEvent.APP_SPECIAL_PERMISSION_VRHELPER_ALLOW diff --git a/src/com/android/settings/applications/assist/DefaultAssistPicker.java b/src/com/android/settings/applications/assist/DefaultAssistPicker.java index 07bc809b0c8..01ca25a5f54 100644 --- a/src/com/android/settings/applications/assist/DefaultAssistPicker.java +++ b/src/com/android/settings/applications/assist/DefaultAssistPicker.java @@ -64,6 +64,11 @@ public class DefaultAssistPicker extends DefaultAppPickerFragment { mAssistUtils = new AssistUtils(context); } + @Override + protected int getPreferenceScreenResId() { + return R.xml.default_assist_settings; + } + @Override protected List getCandidates() { mAvailableAssistants.clear(); diff --git a/src/com/android/settings/applications/assist/DefaultVoiceInputPicker.java b/src/com/android/settings/applications/assist/DefaultVoiceInputPicker.java index 5adda238483..7a5c13dd1b6 100644 --- a/src/com/android/settings/applications/assist/DefaultVoiceInputPicker.java +++ b/src/com/android/settings/applications/assist/DefaultVoiceInputPicker.java @@ -24,6 +24,7 @@ import android.text.TextUtils; import com.android.internal.app.AssistUtils; import com.android.internal.logging.nano.MetricsProto; +import com.android.settings.R; import com.android.settings.applications.defaultapps.DefaultAppInfo; import com.android.settings.applications.defaultapps.DefaultAppPickerFragment; import com.android.settingslib.wrapper.PackageManagerWrapper; @@ -54,6 +55,11 @@ public class DefaultVoiceInputPicker extends DefaultAppPickerFragment { } } + @Override + protected int getPreferenceScreenResId() { + return R.xml.default_voice_settings; + } + @Override protected List getCandidates() { final List candidates = new ArrayList<>(); diff --git a/src/com/android/settings/applications/defaultapps/DefaultAutofillPicker.java b/src/com/android/settings/applications/defaultapps/DefaultAutofillPicker.java index cc85f77e4eb..00dedf9ff68 100644 --- a/src/com/android/settings/applications/defaultapps/DefaultAutofillPicker.java +++ b/src/com/android/settings/applications/defaultapps/DefaultAutofillPicker.java @@ -18,9 +18,7 @@ package com.android.settings.applications.defaultapps; import android.Manifest; import android.app.Activity; -import android.app.Dialog; import android.content.ComponentName; -import android.content.ContentResolver; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; @@ -30,7 +28,6 @@ import android.content.pm.ServiceInfo; import android.net.Uri; import android.os.Bundle; import android.os.Handler; -import android.os.Looper; import android.provider.Settings; import android.service.autofill.AutofillService; import android.service.autofill.AutofillServiceInfo; @@ -105,6 +102,11 @@ public class DefaultAutofillPicker extends DefaultAppPickerFragment { } } + @Override + protected int getPreferenceScreenResId() { + return R.xml.default_autofill_settings; + } + @Override public int getMetricsCategory() { return MetricsProto.MetricsEvent.DEFAULT_AUTOFILL_PICKER; diff --git a/src/com/android/settings/applications/defaultapps/DefaultBrowserPicker.java b/src/com/android/settings/applications/defaultapps/DefaultBrowserPicker.java index fb9c3bfdf20..2639c8db848 100644 --- a/src/com/android/settings/applications/defaultapps/DefaultBrowserPicker.java +++ b/src/com/android/settings/applications/defaultapps/DefaultBrowserPicker.java @@ -21,6 +21,7 @@ import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import com.android.internal.logging.nano.MetricsProto; +import com.android.settings.R; import java.util.ArrayList; import java.util.List; @@ -30,6 +31,11 @@ import java.util.List; */ public class DefaultBrowserPicker extends DefaultAppPickerFragment { + @Override + protected int getPreferenceScreenResId() { + return R.xml.default_browser_settings; + } + @Override public int getMetricsCategory() { return MetricsProto.MetricsEvent.DEFAULT_BROWSER_PICKER; diff --git a/src/com/android/settings/applications/defaultapps/DefaultEmergencyPicker.java b/src/com/android/settings/applications/defaultapps/DefaultEmergencyPicker.java index 8f8c64e41e8..bafd56fd6ae 100644 --- a/src/com/android/settings/applications/defaultapps/DefaultEmergencyPicker.java +++ b/src/com/android/settings/applications/defaultapps/DefaultEmergencyPicker.java @@ -39,6 +39,11 @@ public class DefaultEmergencyPicker extends DefaultAppPickerFragment { return MetricsProto.MetricsEvent.DEFAULT_EMERGENCY_APP_PICKER; } + @Override + protected int getPreferenceScreenResId() { + return R.xml.default_emergency_settings; + } + @Override protected List getCandidates() { final List candidates = new ArrayList<>(); diff --git a/src/com/android/settings/applications/defaultapps/DefaultHomePicker.java b/src/com/android/settings/applications/defaultapps/DefaultHomePicker.java index 75f5292b5e9..63efc44422d 100644 --- a/src/com/android/settings/applications/defaultapps/DefaultHomePicker.java +++ b/src/com/android/settings/applications/defaultapps/DefaultHomePicker.java @@ -43,6 +43,11 @@ public class DefaultHomePicker extends DefaultAppPickerFragment { mPackageName = context.getPackageName(); } + @Override + protected int getPreferenceScreenResId() { + return R.xml.default_home_settings; + } + @Override public int getMetricsCategory() { return MetricsProto.MetricsEvent.DEFAULT_HOME_PICKER; diff --git a/src/com/android/settings/applications/defaultapps/DefaultPhonePicker.java b/src/com/android/settings/applications/defaultapps/DefaultPhonePicker.java index 9f6cc4d091e..6a1d919576a 100644 --- a/src/com/android/settings/applications/defaultapps/DefaultPhonePicker.java +++ b/src/com/android/settings/applications/defaultapps/DefaultPhonePicker.java @@ -23,6 +23,7 @@ import android.telecom.TelecomManager; import android.text.TextUtils; import com.android.internal.logging.nano.MetricsProto; +import com.android.settings.R; import java.util.ArrayList; import java.util.List; @@ -43,6 +44,11 @@ public class DefaultPhonePicker extends DefaultAppPickerFragment { (TelecomManager) context.getSystemService(Context.TELECOM_SERVICE)); } + @Override + protected int getPreferenceScreenResId() { + return R.xml.default_phone_settings; + } + @Override protected List getCandidates() { final List candidates = new ArrayList<>(); diff --git a/src/com/android/settings/applications/defaultapps/DefaultSmsPicker.java b/src/com/android/settings/applications/defaultapps/DefaultSmsPicker.java index 57159b3241f..4c6c9ced030 100644 --- a/src/com/android/settings/applications/defaultapps/DefaultSmsPicker.java +++ b/src/com/android/settings/applications/defaultapps/DefaultSmsPicker.java @@ -39,6 +39,11 @@ public class DefaultSmsPicker extends DefaultAppPickerFragment { return MetricsProto.MetricsEvent.DEFAULT_SMS_PICKER; } + @Override + protected int getPreferenceScreenResId() { + return R.xml.default_sms_settings; + } + @Override protected List getCandidates() { final Context context = getContext(); diff --git a/src/com/android/settings/applications/manageapplications/ManageApplications.java b/src/com/android/settings/applications/manageapplications/ManageApplications.java index 3caa8ab43c9..33762e4e480 100644 --- a/src/com/android/settings/applications/manageapplications/ManageApplications.java +++ b/src/com/android/settings/applications/manageapplications/ManageApplications.java @@ -223,10 +223,13 @@ public class ManageApplications extends InstrumentedPreferenceFragment public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setHasOptionsMenu(true); - mApplicationsState = ApplicationsState.getInstance(getActivity().getApplication()); + final Activity activity = getActivity(); + mApplicationsState = ApplicationsState.getInstance(activity.getApplication()); - Intent intent = getActivity().getIntent(); + Intent intent = activity.getIntent(); Bundle args = getArguments(); + int screenTitle = intent.getIntExtra( + SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE_RESID, R.string.notifications_label); String className = args != null ? args.getString(EXTRA_CLASSNAME) : null; if (className == null) { className = intent.getComponent().getClassName(); @@ -235,6 +238,7 @@ public class ManageApplications extends InstrumentedPreferenceFragment || this instanceof NotificationApps) { mListType = LIST_TYPE_NOTIFICATION; mNotifBackend = new NotificationBackend(); + screenTitle = R.string.app_notifications_title; } else if (className.equals(StorageUseActivity.class.getName())) { if (args != null && args.containsKey(EXTRA_VOLUME_UUID)) { mVolumeUuid = args.getString(EXTRA_VOLUME_UUID); @@ -247,16 +251,21 @@ public class ManageApplications extends InstrumentedPreferenceFragment mSortOrder = R.id.sort_order_size; } else if (className.equals(UsageAccessSettingsActivity.class.getName())) { mListType = LIST_TYPE_USAGE_ACCESS; + screenTitle = R.string.usage_access; } else if (className.equals(HighPowerApplicationsActivity.class.getName())) { mListType = LIST_TYPE_HIGH_POWER; // Default to showing system. mShowSystem = true; + screenTitle = R.string.high_power_apps; } else if (className.equals(OverlaySettingsActivity.class.getName())) { mListType = LIST_TYPE_OVERLAY; + screenTitle = R.string.system_alert_window_settings; } else if (className.equals(WriteSettingsActivity.class.getName())) { mListType = LIST_TYPE_WRITE_SETTINGS; + screenTitle = R.string.write_settings; } else if (className.equals(ManageExternalSourcesActivity.class.getName())) { mListType = LIST_TYPE_MANAGE_SOURCES; + screenTitle = R.string.install_other_apps; } else if (className.equals(GamesStorageActivity.class.getName())) { mListType = LIST_TYPE_GAMES; mSortOrder = R.id.sort_order_size; @@ -280,9 +289,13 @@ public class ManageApplications extends InstrumentedPreferenceFragment mShowSystem = savedInstanceState.getBoolean(EXTRA_SHOW_SYSTEM, mShowSystem); } - mInvalidSizeStr = getActivity().getText(R.string.invalid_size_value); + mInvalidSizeStr = activity.getText(R.string.invalid_size_value); - mResetAppsHelper = new ResetAppsHelper(getActivity()); + mResetAppsHelper = new ResetAppsHelper(activity); + + if (usePreferenceScreenTitle() && screenTitle > 0) { + activity.setTitle(screenTitle); + } } @Override diff --git a/src/com/android/settings/datausage/DataUsagePreference.java b/src/com/android/settings/datausage/DataUsagePreference.java index 63f6054a6a7..35cfbbc7df3 100644 --- a/src/com/android/settings/datausage/DataUsagePreference.java +++ b/src/com/android/settings/datausage/DataUsagePreference.java @@ -16,23 +16,36 @@ package com.android.settings.datausage; import android.content.Context; import android.content.Intent; +import android.content.res.TypedArray; import android.net.NetworkTemplate; import android.os.Bundle; +import android.support.v4.content.res.TypedArrayUtils; import android.support.v7.preference.Preference; import android.text.format.Formatter; import android.util.AttributeSet; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.R; import com.android.settings.Utils; +import com.android.settings.core.InstrumentedPreferenceFragment; import com.android.settingslib.net.DataUsageController; public class DataUsagePreference extends Preference implements TemplatePreference { private NetworkTemplate mTemplate; private int mSubId; + private int mTitleRes; public DataUsagePreference(Context context, AttributeSet attrs) { super(context, attrs); + if (InstrumentedPreferenceFragment.usePreferenceScreenTitle()) { + final TypedArray a = context.obtainStyledAttributes( + attrs, new int[] { com.android.internal.R.attr.title }, + TypedArrayUtils.getAttr( + context, android.support.v7.preference.R.attr.preferenceStyle, + android.R.attr.preferenceStyle), 0); + mTitleRes = a.getResourceId(0, 0); + a.recycle(); + } } @Override @@ -52,6 +65,11 @@ public class DataUsagePreference extends Preference implements TemplatePreferenc Bundle args = new Bundle(); args.putParcelable(DataUsageList.EXTRA_NETWORK_TEMPLATE, mTemplate); args.putInt(DataUsageList.EXTRA_SUB_ID, mSubId); + if (mTitleRes > 0) { + return Utils.onBuildStartFragmentIntent(getContext(), DataUsageList.class.getName(), + args, getContext().getPackageName(), mTitleRes, null, false, + MetricsProto.MetricsEvent.VIEW_UNKNOWN); + } return Utils.onBuildStartFragmentIntent(getContext(), DataUsageList.class.getName(), args, getContext().getPackageName(), 0, getTitle(), false, MetricsProto.MetricsEvent.VIEW_UNKNOWN); diff --git a/src/com/android/settings/datausage/UnrestrictedDataAccess.java b/src/com/android/settings/datausage/UnrestrictedDataAccess.java index c60b84159c6..8fad9864b15 100644 --- a/src/com/android/settings/datausage/UnrestrictedDataAccess.java +++ b/src/com/android/settings/datausage/UnrestrictedDataAccess.java @@ -59,7 +59,11 @@ public class UnrestrictedDataAccess extends SettingsPreferenceFragment public void onCreate(Bundle icicle) { super.onCreate(icicle); setAnimationAllowed(true); - setPreferenceScreen(getPreferenceManager().createPreferenceScreen(getContext())); + if (usePreferenceScreenTitle()) { + addPreferencesFromResource(R.xml.unrestricted_data_access_settings); + } else { + setPreferenceScreen(getPreferenceManager().createPreferenceScreen(getContext())); + } mApplicationsState = ApplicationsState.getInstance( (Application) getContext().getApplicationContext()); mDataSaverBackend = new DataSaverBackend(getContext()); @@ -267,7 +271,7 @@ public class UnrestrictedDataAccess extends SettingsPreferenceFragment if (mState.isDataSaverBlacklisted) { // app is blacklisted, launch App Data Usage screen InstalledAppDetails.startAppInfoFragment(AppDataUsage.class, - getContext().getString(R.string.app_data_usage), + R.string.app_data_usage, UnrestrictedDataAccess.this, mEntry); } else { diff --git a/src/com/android/settings/datetime/ZonePicker.java b/src/com/android/settings/datetime/ZonePicker.java index 2d58dd8b427..00a77df58a6 100644 --- a/src/com/android/settings/datetime/ZonePicker.java +++ b/src/com/android/settings/datetime/ZonePicker.java @@ -34,6 +34,7 @@ import android.widget.TextView; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.R; +import com.android.settings.core.InstrumentedPreferenceFragment; import com.android.settings.core.instrumentation.Instrumentable; import com.android.settings.core.instrumentation.VisibilityLoggerMixin; import com.android.settingslib.datetime.ZoneGetter; @@ -164,6 +165,9 @@ public class ZonePicker extends ListFragment implements Instrumentable { // Sets the adapter setSorting(true); setHasOptionsMenu(true); + if (InstrumentedPreferenceFragment.usePreferenceScreenTitle()) { + activity.setTitle(R.string.date_time_set_timezone); + } } @Override diff --git a/src/com/android/settings/development/featureflags/FeatureFlagsDashboard.java b/src/com/android/settings/development/featureflags/FeatureFlagsDashboard.java index 998e4312c85..c482d8716d8 100644 --- a/src/com/android/settings/development/featureflags/FeatureFlagsDashboard.java +++ b/src/com/android/settings/development/featureflags/FeatureFlagsDashboard.java @@ -42,7 +42,7 @@ public class FeatureFlagsDashboard extends DashboardFragment { @Override protected int getPreferenceScreenResId() { - return R.xml.placeholder_prefs; + return R.xml.feature_flags_settings; } @Override diff --git a/src/com/android/settings/development/qstile/DevelopmentTileConfigFragment.java b/src/com/android/settings/development/qstile/DevelopmentTileConfigFragment.java index c822de007e9..ca4181e7ffd 100644 --- a/src/com/android/settings/development/qstile/DevelopmentTileConfigFragment.java +++ b/src/com/android/settings/development/qstile/DevelopmentTileConfigFragment.java @@ -29,7 +29,6 @@ import java.util.List; public class DevelopmentTileConfigFragment extends DashboardFragment { private static final String TAG = "DevelopmentTileConfig"; - @Override protected String getLogTag() { return TAG; @@ -37,7 +36,7 @@ public class DevelopmentTileConfigFragment extends DashboardFragment { @Override protected int getPreferenceScreenResId() { - return R.xml.placeholder_prefs; + return R.xml.development_tile_settings; } @Override diff --git a/src/com/android/settings/display/ScreenZoomSettings.java b/src/com/android/settings/display/ScreenZoomSettings.java index ec3999b5144..ab92155fd4f 100644 --- a/src/com/android/settings/display/ScreenZoomSettings.java +++ b/src/com/android/settings/display/ScreenZoomSettings.java @@ -17,6 +17,7 @@ package com.android.settings.display; import android.annotation.Nullable; +import android.annotation.StringRes; import android.content.Context; import android.content.res.Configuration; import android.content.res.Resources; @@ -98,6 +99,12 @@ public class ScreenZoomSettings extends PreviewSeekBarPreferenceFragment impleme return R.string.help_url_display_size; } + @Override + @StringRes + protected int getTitle() { + return R.string.screen_zoom_title; + } + @Override public int getMetricsCategory() { return MetricsEvent.DISPLAY_SCREEN_ZOOM; diff --git a/src/com/android/settings/display/VrDisplayPreferencePicker.java b/src/com/android/settings/display/VrDisplayPreferencePicker.java index bccdaa5922f..5487c46b15f 100644 --- a/src/com/android/settings/display/VrDisplayPreferencePicker.java +++ b/src/com/android/settings/display/VrDisplayPreferencePicker.java @@ -32,6 +32,11 @@ public class VrDisplayPreferencePicker extends RadioButtonPickerFragment { static final String PREF_KEY_PREFIX = "vr_display_pref_"; + @Override + protected int getPreferenceScreenResId() { + return R.xml.vr_display_settings; + } + @Override public int getMetricsCategory() { return MetricsProto.MetricsEvent.VR_DISPLAY_PREFERENCE; diff --git a/src/com/android/settings/dream/CurrentDreamPicker.java b/src/com/android/settings/dream/CurrentDreamPicker.java index da9bf9e3be0..f0d520c72ec 100644 --- a/src/com/android/settings/dream/CurrentDreamPicker.java +++ b/src/com/android/settings/dream/CurrentDreamPicker.java @@ -16,11 +16,11 @@ package com.android.settings.dream; - import android.content.ComponentName; import android.content.Context; import android.graphics.drawable.Drawable; import com.android.internal.logging.nano.MetricsProto; +import com.android.settings.R; import com.android.settings.widget.RadioButtonPickerFragment; import com.android.settingslib.dream.DreamBackend; import com.android.settingslib.dream.DreamBackend.DreamInfo; @@ -40,6 +40,11 @@ public final class CurrentDreamPicker extends RadioButtonPickerFragment { mBackend = DreamBackend.getInstance(context); } + @Override + protected int getPreferenceScreenResId() { + return R.xml.current_dream_settings; + } + @Override public int getMetricsCategory() { return MetricsProto.MetricsEvent.DREAM; diff --git a/src/com/android/settings/dream/WhenToDreamPicker.java b/src/com/android/settings/dream/WhenToDreamPicker.java index a55064dc345..7031bdf7ad4 100644 --- a/src/com/android/settings/dream/WhenToDreamPicker.java +++ b/src/com/android/settings/dream/WhenToDreamPicker.java @@ -37,6 +37,11 @@ public class WhenToDreamPicker extends RadioButtonPickerFragment { mBackend = DreamBackend.getInstance(context); } + @Override + protected int getPreferenceScreenResId() { + return R.xml.when_to_dream_settings; + } + @Override public int getMetricsCategory() { return MetricsProto.MetricsEvent.DREAM; diff --git a/src/com/android/settings/nfc/AndroidBeam.java b/src/com/android/settings/nfc/AndroidBeam.java index fe264f3b9ba..e40fc217b9a 100644 --- a/src/com/android/settings/nfc/AndroidBeam.java +++ b/src/com/android/settings/nfc/AndroidBeam.java @@ -16,6 +16,7 @@ package com.android.settings.nfc; +import android.annotation.StringRes; import android.nfc.NfcAdapter; import android.os.Bundle; import android.os.UserHandle; @@ -130,4 +131,10 @@ public class AndroidBeam extends InstrumentedPreferenceFragment public int getMetricsCategory() { return MetricsEvent.NFC_BEAM; } + + @Override + @StringRes + protected int getTitle() { + return R.string.android_beam_settings_title; + } } diff --git a/src/com/android/settings/nfc/PaymentSettings.java b/src/com/android/settings/nfc/PaymentSettings.java index 10f115429f9..66d110397a2 100644 --- a/src/com/android/settings/nfc/PaymentSettings.java +++ b/src/com/android/settings/nfc/PaymentSettings.java @@ -58,8 +58,14 @@ public class PaymentSettings extends SettingsPreferenceFragment implements Index mPaymentBackend = new PaymentBackend(getActivity()); setHasOptionsMenu(true); - PreferenceManager manager = getPreferenceManager(); - PreferenceScreen screen = manager.createPreferenceScreen(getActivity()); + final PreferenceScreen screen; + if (usePreferenceScreenTitle()) { + addPreferencesFromResource(R.xml.nfc_payment_settings); + screen = getPreferenceScreen(); + } else { + PreferenceManager manager = getPreferenceManager(); + screen = manager.createPreferenceScreen(getActivity()); + } List appInfos = mPaymentBackend.getPaymentAppInfos(); if (appInfos != null && appInfos.size() > 0) { @@ -71,7 +77,9 @@ public class PaymentSettings extends SettingsPreferenceFragment implements Index mPaymentBackend); screen.addPreference(foreground); } - setPreferenceScreen(screen); + if (!usePreferenceScreenTitle()) { + setPreferenceScreen(screen); + } } @Override diff --git a/src/com/android/settings/notification/EmptyTextSettings.java b/src/com/android/settings/notification/EmptyTextSettings.java index 3f8ccc63097..2b5998e4043 100644 --- a/src/com/android/settings/notification/EmptyTextSettings.java +++ b/src/com/android/settings/notification/EmptyTextSettings.java @@ -31,6 +31,17 @@ public abstract class EmptyTextSettings extends SettingsPreferenceFragment { private TextView mEmpty; + @Override + public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { + super.onCreatePreferences(savedInstanceState, rootKey); + if (usePreferenceScreenTitle()) { + final int resId = getPreferenceScreenResId(); + if (resId > 0) { + addPreferencesFromResource(resId); + } + } + } + @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); @@ -47,4 +58,9 @@ public abstract class EmptyTextSettings extends SettingsPreferenceFragment { protected void setEmptyText(int text) { mEmpty.setText(text); } + + /** + * Get the res id for static preference xml for this fragment. + */ + protected abstract int getPreferenceScreenResId(); } diff --git a/src/com/android/settings/notification/NotificationAccessSettings.java b/src/com/android/settings/notification/NotificationAccessSettings.java index 858482ca591..af89f4904ff 100644 --- a/src/com/android/settings/notification/NotificationAccessSettings.java +++ b/src/com/android/settings/notification/NotificationAccessSettings.java @@ -16,7 +16,6 @@ package com.android.settings.notification; -import android.app.ActivityManager; import android.app.AlertDialog; import android.app.Dialog; import android.app.Fragment; @@ -38,11 +37,6 @@ public class NotificationAccessSettings extends ManagedServiceSettings { private static final String TAG = NotificationAccessSettings.class.getSimpleName(); private static final Config CONFIG = getNotificationListenerConfig(); - @Override - public void onCreate(Bundle icicle) { - super.onCreate(icicle); - } - private static Config getNotificationListenerConfig() { final Config c = new Config(); c.tag = TAG; @@ -100,6 +94,11 @@ public class NotificationAccessSettings extends ManagedServiceSettings { mNm.setNotificationListenerAccessGranted(service, true); } + @Override + protected int getPreferenceScreenResId() { + return R.xml.notification_access_settings; + } + @VisibleForTesting void logSpecialPermissionChange(boolean enable, String packageName) { int logCategory = enable ? MetricsEvent.APP_SPECIAL_PERMISSION_NOTIVIEW_ALLOW diff --git a/src/com/android/settings/notification/ZenAccessSettings.java b/src/com/android/settings/notification/ZenAccessSettings.java index 238c11ec0e3..44052b10e55 100644 --- a/src/com/android/settings/notification/ZenAccessSettings.java +++ b/src/com/android/settings/notification/ZenAccessSettings.java @@ -21,9 +21,7 @@ import android.app.ActivityManager; import android.app.AlertDialog; import android.app.AppGlobals; import android.app.Dialog; -import android.app.DialogFragment; import android.app.NotificationManager; -import android.content.ComponentName; import android.content.Context; import android.content.DialogInterface; import android.content.pm.ApplicationInfo; @@ -38,7 +36,6 @@ import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.RemoteException; -import android.provider.Settings; import android.provider.Settings.Secure; import android.support.v14.preference.SwitchPreference; import android.support.v7.preference.Preference; @@ -48,7 +45,6 @@ import android.text.TextUtils; import android.util.ArraySet; import android.util.Log; import android.view.View; -import android.widget.Toast; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; @@ -80,7 +76,9 @@ public class ZenAccessSettings extends EmptyTextSettings { mContext = getActivity(); mPkgMan = mContext.getPackageManager(); mNoMan = mContext.getSystemService(NotificationManager.class); - setPreferenceScreen(getPreferenceManager().createPreferenceScreen(mContext)); + if (!usePreferenceScreenTitle()) { + setPreferenceScreen(getPreferenceManager().createPreferenceScreen(mContext)); + } } @Override @@ -89,6 +87,11 @@ public class ZenAccessSettings extends EmptyTextSettings { setEmptyText(R.string.zen_access_empty_text); } + @Override + protected int getPreferenceScreenResId() { + return R.xml.zen_access_settings; + } + @Override public void onResume() { super.onResume(); diff --git a/src/com/android/settings/webview/WebViewAppPicker.java b/src/com/android/settings/webview/WebViewAppPicker.java index 536cd8b0a81..0e9fc39ec6f 100644 --- a/src/com/android/settings/webview/WebViewAppPicker.java +++ b/src/com/android/settings/webview/WebViewAppPicker.java @@ -57,6 +57,11 @@ public class WebViewAppPicker extends DefaultAppPickerFragment { } } + @Override + protected int getPreferenceScreenResId() { + return R.xml.webview_app_settings; + } + @Override protected List getCandidates() { final List packageInfoList = new ArrayList(); diff --git a/src/com/android/settings/widget/RadioButtonPickerFragment.java b/src/com/android/settings/widget/RadioButtonPickerFragment.java index d73631965bc..f1df0a5fc91 100644 --- a/src/com/android/settings/widget/RadioButtonPickerFragment.java +++ b/src/com/android/settings/widget/RadioButtonPickerFragment.java @@ -17,9 +17,6 @@ package com.android.settings.widget; import android.content.Context; -import android.graphics.Bitmap; -import android.graphics.Canvas; -import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.UserHandle; @@ -70,7 +67,12 @@ public abstract class RadioButtonPickerFragment extends InstrumentedPreferenceFr @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { super.onCreatePreferences(savedInstanceState, rootKey); - addPreferencesFromResource(R.xml.placeholder_prefs); + final int resId = getPreferenceScreenResId(); + if (usePreferenceScreenTitle() && resId > 0) { + addPreferencesFromResource(resId); + } else { + addPreferencesFromResource(R.xml.placeholder_prefs); + } updateCandidates(); } @@ -113,6 +115,13 @@ public abstract class RadioButtonPickerFragment extends InstrumentedPreferenceFr onSelectionPerformed(success); } + /** + * Get the res id for static preference xml for this fragment. + */ + protected int getPreferenceScreenResId() { + return -1; + } + /** * A chance for subclasses to bind additional things to the preference. */ diff --git a/tests/robotests/src/com/android/settings/development/featureflags/FeatureFlagsDashboardTest.java b/tests/robotests/src/com/android/settings/development/featureflags/FeatureFlagsDashboardTest.java index 92e92fc218d..0839a024c95 100644 --- a/tests/robotests/src/com/android/settings/development/featureflags/FeatureFlagsDashboardTest.java +++ b/tests/robotests/src/com/android/settings/development/featureflags/FeatureFlagsDashboardTest.java @@ -51,8 +51,8 @@ public class FeatureFlagsDashboardTest { } @Test - public void shouldUsePlaceholderPreferenceLayout() { + public void shouldUseFeatureFlagPreferenceLayout() { assertThat(mDashboard.getPreferenceScreenResId()) - .isEqualTo(R.xml.placeholder_prefs); + .isEqualTo(R.xml.feature_flags_settings); } }