diff --git a/src/com/android/settings/MasterClear.java b/src/com/android/settings/MasterClear.java
index 22356cc..a1f836b 100644
--- a/src/com/android/settings/MasterClear.java
+++ b/src/com/android/settings/MasterClear.java
@@ -161,7 +161,7 @@
         new SubSettingLauncher(getContext())
                 .setDestination(MasterClearConfirm.class.getName())
                 .setArguments(args)
-                .setTitle(R.string.master_clear_confirm_title)
+                .setTitleRes(R.string.master_clear_confirm_title)
                 .setSourceMetricsCategory(getMetricsCategory())
                 .launch();
     }
diff --git a/src/com/android/settings/ResetNetwork.java b/src/com/android/settings/ResetNetwork.java
index 591ce0a..22e5716 100644
--- a/src/com/android/settings/ResetNetwork.java
+++ b/src/com/android/settings/ResetNetwork.java
@@ -123,7 +123,7 @@
         new SubSettingLauncher(getContext())
                 .setDestination(ResetNetworkConfirm.class.getName())
                 .setArguments(args)
-                .setTitle(R.string.reset_network_confirm_title)
+                .setTitleRes(R.string.reset_network_confirm_title)
                 .setSourceMetricsCategory(getMetricsCategory())
                 .launch();
     }
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index 496baa6..0a0fd1b 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -200,7 +200,7 @@
                 .setSourceMetricsCategory(caller instanceof Instrumentable
                         ? ((Instrumentable) caller).getMetricsCategory()
                         : Instrumentable.METRICS_CATEGORY_UNKNOWN)
-                .setTitle(-1)
+                .setTitleRes(-1)
                 .launch();
         return true;
     }
diff --git a/src/com/android/settings/accounts/AccountPreferenceController.java b/src/com/android/settings/accounts/AccountPreferenceController.java
index 80a5435..36e2fca 100644
--- a/src/com/android/settings/accounts/AccountPreferenceController.java
+++ b/src/com/android/settings/accounts/AccountPreferenceController.java
@@ -250,7 +250,7 @@
                 new SubSettingLauncher(mContext)
                         .setSourceMetricsCategory(mParent.getMetricsCategory())
                         .setDestination(ManagedProfileSettings.class.getName())
-                        .setTitle(R.string.managed_profile_settings_title)
+                        .setTitleRes(R.string.managed_profile_settings_title)
                         .setArguments(arguments)
                         .launch();
 
diff --git a/src/com/android/settings/accounts/AccountSyncPreferenceController.java b/src/com/android/settings/accounts/AccountSyncPreferenceController.java
index a0c30ac..22855fc 100644
--- a/src/com/android/settings/accounts/AccountSyncPreferenceController.java
+++ b/src/com/android/settings/accounts/AccountSyncPreferenceController.java
@@ -66,7 +66,7 @@
                 .setDestination(AccountSyncSettings.class.getName())
                 .setArguments(args)
                 .setSourceMetricsCategory( MetricsProto.MetricsEvent.ACCOUNT)
-                .setTitle( R.string.account_sync_title)
+                .setTitleRes( R.string.account_sync_title)
                 .launch();
 
         return true;
diff --git a/src/com/android/settings/accounts/AccountTypePreference.java b/src/com/android/settings/accounts/AccountTypePreference.java
index 66f8888..1a4c57d 100644
--- a/src/com/android/settings/accounts/AccountTypePreference.java
+++ b/src/com/android/settings/accounts/AccountTypePreference.java
@@ -107,7 +107,7 @@
             new SubSettingLauncher(getContext())
                     .setDestination(mFragment)
                     .setArguments(mFragmentArguments)
-                    .setTitle(mTitleResPackageName, mTitleResId)
+                    .setTitleRes(mTitleResPackageName, mTitleResId)
                     .setSourceMetricsCategory(mMetricsCategory)
                     .launch();
             return true;
diff --git a/src/com/android/settings/accounts/AccountTypePreferenceLoader.java b/src/com/android/settings/accounts/AccountTypePreferenceLoader.java
index e811388..dd0eadd 100644
--- a/src/com/android/settings/accounts/AccountTypePreferenceLoader.java
+++ b/src/com/android/settings/accounts/AccountTypePreferenceLoader.java
@@ -235,7 +235,7 @@
                     ? ((Instrumentable) mFragment).getMetricsCategory()
                     : Instrumentable.METRICS_CATEGORY_UNKNOWN;
             new SubSettingLauncher(preference.getContext())
-                    .setTitle(mTitleRes)
+                    .setTitleRes(mTitleRes)
                     .setDestination(mClass)
                     .setSourceMetricsCategory(metricsCategory)
                     .launch();
diff --git a/src/com/android/settings/applications/AppInfoBase.java b/src/com/android/settings/applications/AppInfoBase.java
index f8ed315..f8a222d 100644
--- a/src/com/android/settings/applications/AppInfoBase.java
+++ b/src/com/android/settings/applications/AppInfoBase.java
@@ -228,7 +228,7 @@
         new SubSettingLauncher(source.getContext())
                 .setDestination(fragment.getName())
                 .setSourceMetricsCategory(sourceMetricsCategory)
-                .setTitle(titleRes)
+                .setTitleRes(titleRes)
                 .setArguments(args)
                 .setUserHandle(new UserHandle(UserHandle.getUserId(uid)))
                 .setResultListener(source, request)
diff --git a/src/com/android/settings/applications/ConvertToFbe.java b/src/com/android/settings/applications/ConvertToFbe.java
index 70ee415..85527d2 100644
--- a/src/com/android/settings/applications/ConvertToFbe.java
+++ b/src/com/android/settings/applications/ConvertToFbe.java
@@ -83,7 +83,7 @@
     private void convert() {
         new SubSettingLauncher(getContext())
                 .setDestination(ConfirmConvertToFbe.class.getName())
-                .setTitle(R.string.convert_to_file_encryption)
+                .setTitleRes(R.string.convert_to_file_encryption)
                 .setSourceMetricsCategory(getMetricsCategory())
                 .launch();
     }
diff --git a/src/com/android/settings/applications/ProcessStatsBase.java b/src/com/android/settings/applications/ProcessStatsBase.java
index 67a324b..f7acef7 100644
--- a/src/com/android/settings/applications/ProcessStatsBase.java
+++ b/src/com/android/settings/applications/ProcessStatsBase.java
@@ -141,7 +141,7 @@
         args.putDouble(ProcessStatsDetail.EXTRA_TOTAL_SCALE, memInfo.totalScale);
         new SubSettingLauncher(activity)
                 .setDestination(ProcessStatsDetail.class.getName())
-                .setTitle(R.string.memory_usage)
+                .setTitleRes(R.string.memory_usage)
                 .setArguments(args)
                 .setSourceMetricsCategory(Instrumentable.METRICS_CATEGORY_UNKNOWN)
                 .launch();
diff --git a/src/com/android/settings/applications/ProcessStatsSummary.java b/src/com/android/settings/applications/ProcessStatsSummary.java
index 72572db..77591ba 100644
--- a/src/com/android/settings/applications/ProcessStatsSummary.java
+++ b/src/com/android/settings/applications/ProcessStatsSummary.java
@@ -118,7 +118,7 @@
             mStatsManager.xferStats();
             new SubSettingLauncher(getContext())
                     .setDestination(ProcessStatsUi.class.getName())
-                    .setTitle(R.string.memory_usage_apps)
+                    .setTitleRes(R.string.memory_usage_apps)
                     .setArguments(args)
                     .setSourceMetricsCategory(getMetricsCategory())
                     .launch();
diff --git a/src/com/android/settings/applications/RunningProcessesView.java b/src/com/android/settings/applications/RunningProcessesView.java
index d714c5f..c065af4 100644
--- a/src/com/android/settings/applications/RunningProcessesView.java
+++ b/src/com/android/settings/applications/RunningProcessesView.java
@@ -416,7 +416,7 @@
             new SubSettingLauncher(getContext())
                     .setDestination(RunningServiceDetails.class.getName())
                     .setArguments(args)
-                    .setTitle(R.string.runningservicedetails_settings_title)
+                    .setTitleRes(R.string.runningservicedetails_settings_title)
                     .setSourceMetricsCategory(mOwner.getMetricsCategory())
                     .launch();
         }
diff --git a/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java b/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java
index 3a4fff0..c460809 100755
--- a/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java
+++ b/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java
@@ -556,7 +556,7 @@
         new SubSettingLauncher(caller.getContext())
                 .setDestination(fragment.getName())
                 .setArguments(args)
-                .setTitle(title)
+                .setTitleRes(title)
                 .setResultListener(caller, SUB_INFO_FRAGMENT)
                 .setSourceMetricsCategory(caller.getMetricsCategory())
                 .launch();
diff --git a/src/com/android/settings/applications/appinfo/DefaultAppShortcutPreferenceControllerBase.java b/src/com/android/settings/applications/appinfo/DefaultAppShortcutPreferenceControllerBase.java
index bd8127a..e5dcb66 100644
--- a/src/com/android/settings/applications/appinfo/DefaultAppShortcutPreferenceControllerBase.java
+++ b/src/com/android/settings/applications/appinfo/DefaultAppShortcutPreferenceControllerBase.java
@@ -63,7 +63,7 @@
             new SubSettingLauncher(mContext)
                     .setDestination(DefaultAppSettings.class.getName())
                     .setArguments(bundle)
-                    .setTitle(R.string.configure_apps)
+                    .setTitleRes(R.string.configure_apps)
                     .setSourceMetricsCategory(MetricsProto.MetricsEvent.VIEW_UNKNOWN)
                     .launch();
             return true;
diff --git a/src/com/android/settings/applications/manageapplications/ManageApplications.java b/src/com/android/settings/applications/manageapplications/ManageApplications.java
index 22652b1..eb74b2e 100644
--- a/src/com/android/settings/applications/manageapplications/ManageApplications.java
+++ b/src/com/android/settings/applications/manageapplications/ManageApplications.java
@@ -670,14 +670,14 @@
                 if (mListType == LIST_TYPE_NOTIFICATION) {
                     new SubSettingLauncher(getContext())
                             .setDestination(ConfigureNotificationSettings.class.getName())
-                            .setTitle(R.string.configure_notification_settings)
+                            .setTitleRes(R.string.configure_notification_settings)
                             .setSourceMetricsCategory(getMetricsCategory())
                             .setResultListener(this, ADVANCED_SETTINGS)
                             .launch();
                 } else {
                     new SubSettingLauncher(getContext())
                             .setDestination(DefaultAppSettings.class.getName())
-                            .setTitle(R.string.configure_apps)
+                            .setTitleRes(R.string.configure_apps)
                             .setSourceMetricsCategory(getMetricsCategory())
                             .setResultListener(this, ADVANCED_SETTINGS)
                             .launch();
diff --git a/src/com/android/settings/bluetooth/BluetoothDeviceUpdater.java b/src/com/android/settings/bluetooth/BluetoothDeviceUpdater.java
index ad92c91..2ebaafc 100644
--- a/src/com/android/settings/bluetooth/BluetoothDeviceUpdater.java
+++ b/src/com/android/settings/bluetooth/BluetoothDeviceUpdater.java
@@ -241,7 +241,7 @@
         new SubSettingLauncher(mFragment.getContext())
                 .setDestination(BluetoothDeviceDetailsFragment.class.getName())
                 .setArguments(args)
-                .setTitle(R.string.device_details_title)
+                .setTitleRes(R.string.device_details_title)
                 .setSourceMetricsCategory(mFragment.getMetricsCategory())
                 .launch();
     }
diff --git a/src/com/android/settings/bluetooth/BluetoothPairingPreferenceController.java b/src/com/android/settings/bluetooth/BluetoothPairingPreferenceController.java
index 3d8d038..3719e06 100644
--- a/src/com/android/settings/bluetooth/BluetoothPairingPreferenceController.java
+++ b/src/com/android/settings/bluetooth/BluetoothPairingPreferenceController.java
@@ -57,7 +57,7 @@
         if (KEY_PAIRING.equals(preference.getKey())) {
             new SubSettingLauncher(mContext)
                     .setDestination(BluetoothPairingDetail.class.getName())
-                    .setTitle(R.string.bluetooth_pairing_page_title)
+                    .setTitleRes(R.string.bluetooth_pairing_page_title)
                     .setSourceMetricsCategory(mFragment.getMetricsCategory())
                     .launch();
 
diff --git a/src/com/android/settings/connecteddevice/usb/ConnectedUsbDeviceUpdater.java b/src/com/android/settings/connecteddevice/usb/ConnectedUsbDeviceUpdater.java
index cf24d8c..4ca12c8 100644
--- a/src/com/android/settings/connecteddevice/usb/ConnectedUsbDeviceUpdater.java
+++ b/src/com/android/settings/connecteddevice/usb/ConnectedUsbDeviceUpdater.java
@@ -82,7 +82,7 @@
             // New version - uses a separate screen.
             new SubSettingLauncher(mFragment.getContext())
                     .setDestination(UsbDetailsFragment.class.getName())
-                    .setTitle(R.string.device_details_title)
+                    .setTitleRes(R.string.device_details_title)
                     .setSourceMetricsCategory(mFragment.getMetricsCategory())
                     .launch();
             return true;
diff --git a/src/com/android/settings/core/SubSettingLauncher.java b/src/com/android/settings/core/SubSettingLauncher.java
index 88fbb701..16eea00 100644
--- a/src/com/android/settings/core/SubSettingLauncher.java
+++ b/src/com/android/settings/core/SubSettingLauncher.java
@@ -48,18 +48,37 @@
         return this;
     }
 
-    public SubSettingLauncher setTitle(@StringRes int titleResId) {
-        return setTitle(null /*titlePackageName*/, titleResId);
+    /**
+     * Set title with resource string id.
+     *
+     * @param titleResId res id of string
+     */
+    public SubSettingLauncher setTitleRes(@StringRes int titleResId) {
+        return setTitleRes(null /*titlePackageName*/, titleResId);
     }
 
-    public SubSettingLauncher setTitle(String titlePackageName, @StringRes int titleResId) {
+    /**
+     * Set title with resource string id, and package name to resolve the resource id.
+     *
+     * @param titlePackageName package name to resolve resource
+     * @param titleResId       res id of string, will use package name to resolve
+     */
+    public SubSettingLauncher setTitleRes(String titlePackageName, @StringRes int titleResId) {
         mLaunchRequest.titleResPackageName = titlePackageName;
         mLaunchRequest.titleResId = titleResId;
         mLaunchRequest.title = null;
         return this;
     }
 
-    public SubSettingLauncher setTitle(CharSequence title) {
+    /**
+     * Set title with text,
+     * This method is only for user generated string,
+     * display text will not update after locale change,
+     * if title string is from resource id, please use setTitleRes.
+     *
+     * @param title text title
+     */
+    public SubSettingLauncher setTitleText(CharSequence title) {
         mLaunchRequest.title = title;
         return this;
     }
diff --git a/src/com/android/settings/dashboard/conditional/BatterySaverCondition.java b/src/com/android/settings/dashboard/conditional/BatterySaverCondition.java
index 728154d..621f371 100644
--- a/src/com/android/settings/dashboard/conditional/BatterySaverCondition.java
+++ b/src/com/android/settings/dashboard/conditional/BatterySaverCondition.java
@@ -70,7 +70,7 @@
         new SubSettingLauncher(mManager.getContext())
                 .setDestination(BatterySaverSettings.class.getName())
                 .setSourceMetricsCategory(MetricsEvent.DASHBOARD_SUMMARY)
-                .setTitle(R.string.battery_saver)
+                .setTitleRes(R.string.battery_saver)
                 .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
                 .launch();
     }
diff --git a/src/com/android/settings/dashboard/conditional/DndCondition.java b/src/com/android/settings/dashboard/conditional/DndCondition.java
index 5cd253c..fcf933e 100644
--- a/src/com/android/settings/dashboard/conditional/DndCondition.java
+++ b/src/com/android/settings/dashboard/conditional/DndCondition.java
@@ -107,7 +107,7 @@
         new SubSettingLauncher(mManager.getContext())
                 .setDestination(ZenModeSettings.class.getName())
                 .setSourceMetricsCategory(MetricsEvent.DASHBOARD_SUMMARY)
-                .setTitle(R.string.zen_mode_settings_title)
+                .setTitleRes(R.string.zen_mode_settings_title)
                 .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
                 .launch();
     }
diff --git a/src/com/android/settings/dashboard/conditional/HotspotCondition.java b/src/com/android/settings/dashboard/conditional/HotspotCondition.java
index 53e0c07..68f2382 100644
--- a/src/com/android/settings/dashboard/conditional/HotspotCondition.java
+++ b/src/com/android/settings/dashboard/conditional/HotspotCondition.java
@@ -103,7 +103,7 @@
         new SubSettingLauncher(mManager.getContext())
                 .setDestination(TetherSettings.class.getName())
                 .setSourceMetricsCategory(MetricsEvent.DASHBOARD_SUMMARY)
-                .setTitle(R.string.tether_settings_title_all)
+                .setTitleRes(R.string.tether_settings_title_all)
                 .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
                 .launch();
     }
diff --git a/src/com/android/settings/dashboard/conditional/NightDisplayCondition.java b/src/com/android/settings/dashboard/conditional/NightDisplayCondition.java
index 78278b5..c3ba534 100644
--- a/src/com/android/settings/dashboard/conditional/NightDisplayCondition.java
+++ b/src/com/android/settings/dashboard/conditional/NightDisplayCondition.java
@@ -66,7 +66,7 @@
         new SubSettingLauncher(mManager.getContext())
                 .setDestination(NightDisplaySettings.class.getName())
                 .setSourceMetricsCategory(MetricsEvent.DASHBOARD_SUMMARY)
-                .setTitle(R.string.night_display_title)
+                .setTitleRes(R.string.night_display_title)
                 .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
                 .launch();
     }
diff --git a/src/com/android/settings/datausage/BillingCyclePreference.java b/src/com/android/settings/datausage/BillingCyclePreference.java
index 9ed6ea7..7d454a1 100644
--- a/src/com/android/settings/datausage/BillingCyclePreference.java
+++ b/src/com/android/settings/datausage/BillingCyclePreference.java
@@ -88,7 +88,7 @@
         return new SubSettingLauncher(getContext())
                 .setDestination(BillingCycleSettings.class.getName())
                 .setArguments(args)
-                .setTitle(R.string.billing_cycle)
+                .setTitleRes(R.string.billing_cycle)
                 .setSourceMetricsCategory(MetricsProto.MetricsEvent.VIEW_UNKNOWN)
                 .toIntent();
     }
diff --git a/src/com/android/settings/datausage/DataUsageList.java b/src/com/android/settings/datausage/DataUsageList.java
index 2ab75ee..6f30546 100644
--- a/src/com/android/settings/datausage/DataUsageList.java
+++ b/src/com/android/settings/datausage/DataUsageList.java
@@ -155,7 +155,7 @@
             args.putParcelable(DataUsageList.EXTRA_NETWORK_TEMPLATE, mTemplate);
             new SubSettingLauncher(getContext())
                     .setDestination(BillingCycleSettings.class.getName())
-                    .setTitle(R.string.billing_cycle)
+                    .setTitleRes(R.string.billing_cycle)
                     .setSourceMetricsCategory(getMetricsCategory())
                     .setArguments(args)
                     .launch();
@@ -432,7 +432,7 @@
 
         new SubSettingLauncher(getContext())
                 .setDestination(AppDataUsage.class.getName())
-                .setTitle(R.string.app_data_usage)
+                .setTitleRes(R.string.app_data_usage)
                 .setArguments(args)
                 .setSourceMetricsCategory(getMetricsCategory())
                 .launch();
diff --git a/src/com/android/settings/datausage/DataUsagePreference.java b/src/com/android/settings/datausage/DataUsagePreference.java
index 9e6684c..bb3902c 100644
--- a/src/com/android/settings/datausage/DataUsagePreference.java
+++ b/src/com/android/settings/datausage/DataUsagePreference.java
@@ -83,15 +83,15 @@
                 .setSourceMetricsCategory(MetricsProto.MetricsEvent.VIEW_UNKNOWN);
         if (FeatureFlagUtils.isEnabled(getContext(), FeatureFlags.DATA_USAGE_SETTINGS_V2)) {
             if (mTemplate.isMatchRuleMobile()) {
-                launcher.setTitle(R.string.app_cellular_data_usage);
+                launcher.setTitleRes(R.string.app_cellular_data_usage);
             } else {
-                launcher.setTitle(mTitleRes);
+                launcher.setTitleRes(mTitleRes);
             }
         } else {
             if (mTitleRes > 0) {
-                launcher.setTitle(mTitleRes);
+                launcher.setTitleRes(mTitleRes);
             } else {
-                launcher.setTitle(getTitle());
+                launcher.setTitleText(getTitle());
             }
         }
         return launcher.toIntent();
diff --git a/src/com/android/settings/datausage/DataUsageSummaryPreference.java b/src/com/android/settings/datausage/DataUsageSummaryPreference.java
index 6dcf166..19e3bc0 100644
--- a/src/com/android/settings/datausage/DataUsageSummaryPreference.java
+++ b/src/com/android/settings/datausage/DataUsageSummaryPreference.java
@@ -207,7 +207,7 @@
                 .setArguments(args)
                 .setDestination(DataUsageList.class.getName())
                 .setSourceMetricsCategory(MetricsProto.MetricsEvent.VIEW_UNKNOWN);
-        launcher.setTitle(context.getString(R.string.wifi_data_usage));
+        launcher.setTitleRes(R.string.wifi_data_usage);
         launcher.launch();
     }
 
diff --git a/src/com/android/settings/deviceinfo/BrandedAccountPreferenceController.java b/src/com/android/settings/deviceinfo/BrandedAccountPreferenceController.java
index ca2175b..ca2d9cf 100644
--- a/src/com/android/settings/deviceinfo/BrandedAccountPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/BrandedAccountPreferenceController.java
@@ -72,7 +72,7 @@
 
             new SubSettingLauncher(mContext)
                     .setDestination(AccountDetailDashboardFragment.class.getName())
-                    .setTitle(R.string.account_sync_title)
+                    .setTitleRes(R.string.account_sync_title)
                     .setArguments(args)
                     .setSourceMetricsCategory(MetricsEvent.DEVICEINFO)
                     .launch();
diff --git a/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java b/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java
index 54e0eef..1c3e12f 100644
--- a/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java
+++ b/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java
@@ -433,7 +433,7 @@
                 args.putString(VolumeInfo.EXTRA_VOLUME_ID, mVolume.getId());
                 new SubSettingLauncher(context)
                         .setDestination(PrivateVolumeUnmount.class.getCanonicalName())
-                        .setTitle(R.string.storage_menu_unmount)
+                        .setTitleRes(R.string.storage_menu_unmount)
                         .setSourceMetricsCategory(getMetricsCategory())
                         .setArguments(args)
                         .launch();
@@ -442,7 +442,7 @@
                 args.putString(VolumeInfo.EXTRA_VOLUME_ID, mVolume.getId());
                 new SubSettingLauncher(context)
                         .setDestination(PrivateVolumeFormat.class.getCanonicalName())
-                        .setTitle(R.string.storage_menu_format)
+                        .setTitleRes(R.string.storage_menu_format)
                         .setSourceMetricsCategory(getMetricsCategory())
                         .setArguments(args)
                         .launch();
@@ -487,7 +487,7 @@
                 intent = new SubSettingLauncher(getActivity())
                         .setDestination(ManageApplications.class.getName())
                         .setArguments(args)
-                        .setTitle(R.string.apps_storage)
+                        .setTitleRes(R.string.apps_storage)
                         .setSourceMetricsCategory(getMetricsCategory())
                         .toIntent();
 
diff --git a/src/com/android/settings/deviceinfo/StorageSettings.java b/src/com/android/settings/deviceinfo/StorageSettings.java
index 7734c4a..3c03032 100644
--- a/src/com/android/settings/deviceinfo/StorageSettings.java
+++ b/src/com/android/settings/deviceinfo/StorageSettings.java
@@ -238,7 +238,7 @@
                 new SubSettingLauncher(getActivity())
                         .setDestination(StorageDashboardFragment.class.getName())
                         .setArguments(args)
-                        .setTitle(R.string.storage_settings)
+                        .setTitleRes(R.string.storage_settings)
                         .setSourceMetricsCategory(getMetricsCategory())
                         .launch();
                 finish();
@@ -285,7 +285,7 @@
                 if (VolumeInfo.ID_PRIVATE_INTERNAL.equals(vol.getId())) {
                     new SubSettingLauncher(getContext())
                             .setDestination(StorageDashboardFragment.class.getCanonicalName())
-                            .setTitle(R.string.storage_settings)
+                            .setTitleRes(R.string.storage_settings)
                             .setSourceMetricsCategory(getMetricsCategory())
                             .setArguments(args)
                             .launch();
@@ -296,7 +296,7 @@
                             sTotalInternalStorage));
                     new SubSettingLauncher(getContext())
                             .setDestination(PrivateVolumeSettings.class.getCanonicalName())
-                            .setTitle(-1)
+                            .setTitleRes(-1)
                             .setSourceMetricsCategory(getMetricsCategory())
                             .setArguments(args)
                             .launch();
@@ -319,7 +319,7 @@
             args.putString(VolumeRecord.EXTRA_FS_UUID, key);
             new SubSettingLauncher(getContext())
                     .setDestination(PrivateVolumeForget.class.getCanonicalName())
-                    .setTitle(R.string.storage_menu_forget)
+                    .setTitleRes(R.string.storage_menu_forget)
                     .setSourceMetricsCategory(getMetricsCategory())
                     .setArguments(args)
                     .launch();
@@ -340,7 +340,7 @@
             args.putString(VolumeInfo.EXTRA_VOLUME_ID, vol.getId());
             new SubSettingLauncher(context)
                     .setDestination(PublicVolumeSettings.class.getCanonicalName())
-                    .setTitle(-1)
+                    .setTitleRes(-1)
                     .setSourceMetricsCategory(METRICS_CATEGORY)
                     .setArguments(args)
                     .launch();
diff --git a/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java b/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java
index 6ae4a6f..9604f74 100644
--- a/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java
@@ -321,7 +321,7 @@
                 ManageApplications.STORAGE_TYPE_PHOTOS_VIDEOS);
         return new SubSettingLauncher(mContext)
                 .setDestination(ManageApplications.class.getName())
-                .setTitle(R.string.storage_photos_videos)
+                .setTitleRes(R.string.storage_photos_videos)
                 .setArguments(args)
                 .setSourceMetricsCategory(mMetricsFeatureProvider.getMetricsCategory(mFragment))
                 .toIntent();
@@ -340,7 +340,7 @@
         args.putInt(ManageApplications.EXTRA_STORAGE_TYPE, ManageApplications.STORAGE_TYPE_MUSIC);
         return new SubSettingLauncher(mContext)
                 .setDestination(ManageApplications.class.getName())
-                .setTitle(R.string.storage_music_audio)
+                .setTitleRes(R.string.storage_music_audio)
                 .setArguments(args)
                 .setSourceMetricsCategory(mMetricsFeatureProvider.getMetricsCategory(mFragment))
                 .toIntent();
@@ -357,7 +357,7 @@
         args.putString(ManageApplications.EXTRA_VOLUME_NAME, mVolume.getDescription());
         return new SubSettingLauncher(mContext)
                 .setDestination(ManageApplications.class.getName())
-                .setTitle(R.string.apps_storage)
+                .setTitleRes(R.string.apps_storage)
                 .setArguments(args)
                 .setSourceMetricsCategory(mMetricsFeatureProvider.getMetricsCategory(mFragment))
                 .toIntent();
@@ -369,7 +369,7 @@
                 Settings.GamesStorageActivity.class.getName());
         return new SubSettingLauncher(mContext)
                 .setDestination(ManageApplications.class.getName())
-                .setTitle(R.string.game_storage_settings)
+                .setTitleRes(R.string.game_storage_settings)
                 .setArguments(args)
                 .setSourceMetricsCategory(mMetricsFeatureProvider.getMetricsCategory(mFragment))
                 .toIntent();
@@ -381,7 +381,7 @@
                 Settings.MoviesStorageActivity.class.getName());
         return new SubSettingLauncher(mContext)
                 .setDestination(ManageApplications.class.getName())
-                .setTitle(R.string.storage_movies_tv)
+                .setTitleRes(R.string.storage_movies_tv)
                 .setArguments(args)
                 .setSourceMetricsCategory(mMetricsFeatureProvider.getMetricsCategory(mFragment))
                 .toIntent();
diff --git a/src/com/android/settings/deviceinfo/storage/UserProfileController.java b/src/com/android/settings/deviceinfo/storage/UserProfileController.java
index 65a29d2..8571294 100644
--- a/src/com/android/settings/deviceinfo/storage/UserProfileController.java
+++ b/src/com/android/settings/deviceinfo/storage/UserProfileController.java
@@ -82,7 +82,7 @@
             new SubSettingLauncher(mContext)
                     .setDestination(StorageProfileFragment.class.getName())
                     .setArguments(args)
-                    .setTitle(mUser.name)
+                    .setTitleText(mUser.name)
                     .setSourceMetricsCategory(MetricsProto.MetricsEvent.DEVICEINFO_STORAGE)
                     .launch();
             return true;
diff --git a/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java b/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java
index badcb53..c25463a 100644
--- a/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java
+++ b/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java
@@ -156,7 +156,7 @@
 
         new SubSettingLauncher(caller)
                 .setDestination(AdvancedPowerUsageDetail.class.getName())
-                .setTitle(R.string.battery_details_title)
+                .setTitleRes(R.string.battery_details_title)
                 .setArguments(args)
                 .setSourceMetricsCategory(fragment.getMetricsCategory())
                 .setUserHandle(new UserHandle(getUserIdToLaunchAdvancePowerUsageDetail(sipper)))
@@ -192,7 +192,7 @@
 
         new SubSettingLauncher(caller)
                 .setDestination(AdvancedPowerUsageDetail.class.getName())
-                .setTitle(R.string.battery_details_title)
+                .setTitleRes(R.string.battery_details_title)
                 .setArguments(args)
                 .setSourceMetricsCategory(fragment.getMetricsCategory())
                 .launch();
diff --git a/src/com/android/settings/fuelgauge/BatteryOptimizationPreferenceController.java b/src/com/android/settings/fuelgauge/BatteryOptimizationPreferenceController.java
index 0f772ff..7adc41b 100644
--- a/src/com/android/settings/fuelgauge/BatteryOptimizationPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/BatteryOptimizationPreferenceController.java
@@ -89,7 +89,7 @@
         new SubSettingLauncher(mSettingsActivity)
                 .setDestination(ManageApplications.class.getName())
                 .setArguments(args)
-                .setTitle(R.string.high_power_apps)
+                .setTitleRes(R.string.high_power_apps)
                 .setSourceMetricsCategory(mFragment.getMetricsCategory())
                 .launch();
 
diff --git a/src/com/android/settings/fuelgauge/PowerUsageAnomalyDetails.java b/src/com/android/settings/fuelgauge/PowerUsageAnomalyDetails.java
index cd34a47..5b4e22d 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageAnomalyDetails.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageAnomalyDetails.java
@@ -70,7 +70,7 @@
 
         new SubSettingLauncher(caller)
                 .setDestination(PowerUsageAnomalyDetails.class.getName())
-                .setTitle(R.string.battery_abnormal_details_title)
+                .setTitleRes(R.string.battery_abnormal_details_title)
                 .setArguments(args)
                 .setSourceMetricsCategory(fragment.getMetricsCategory())
                 .launch();
diff --git a/src/com/android/settings/fuelgauge/PowerUsageSummary.java b/src/com/android/settings/fuelgauge/PowerUsageSummary.java
index cb00780..af69cee 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageSummary.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageSummary.java
@@ -285,7 +285,7 @@
                 new SubSettingLauncher(getContext())
                         .setDestination(PowerUsageAdvanced.class.getName())
                         .setSourceMetricsCategory(getMetricsCategory())
-                        .setTitle(R.string.advanced_battery_title)
+                        .setTitleRes(R.string.advanced_battery_title)
                         .launch();
                 return true;
             default:
diff --git a/src/com/android/settings/fuelgauge/RestrictedAppDetails.java b/src/com/android/settings/fuelgauge/RestrictedAppDetails.java
index a957292..ba1db34 100644
--- a/src/com/android/settings/fuelgauge/RestrictedAppDetails.java
+++ b/src/com/android/settings/fuelgauge/RestrictedAppDetails.java
@@ -17,7 +17,6 @@
 package com.android.settings.fuelgauge;
 
 import android.app.AppOpsManager;
-import android.app.Fragment;
 import android.content.Context;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageManager;
@@ -31,7 +30,6 @@
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.logging.nano.MetricsProto;
 import com.android.settings.R;
-import com.android.settings.SettingsActivity;
 import com.android.settings.Utils;
 import com.android.settings.core.InstrumentedPreferenceFragment;
 import com.android.settings.core.SubSettingLauncher;
@@ -75,7 +73,7 @@
         new SubSettingLauncher(fragment.getContext())
                 .setDestination(RestrictedAppDetails.class.getName())
                 .setArguments(args)
-                .setTitle(R.string.restricted_app_title)
+                .setTitleRes(R.string.restricted_app_title)
                 .setSourceMetricsCategory(fragment.getMetricsCategory())
                 .launch();
     }
diff --git a/src/com/android/settings/fuelgauge/batterytip/actions/SmartBatteryAction.java b/src/com/android/settings/fuelgauge/batterytip/actions/SmartBatteryAction.java
index 4892591..a28e134 100644
--- a/src/com/android/settings/fuelgauge/batterytip/actions/SmartBatteryAction.java
+++ b/src/com/android/settings/fuelgauge/batterytip/actions/SmartBatteryAction.java
@@ -47,7 +47,7 @@
                         ? ((Instrumentable) mFragment).getMetricsCategory()
                         : Instrumentable.METRICS_CATEGORY_UNKNOWN)
                 .setDestination(SmartBatterySettings.class.getName())
-                .setTitle(R.string.smart_battery_manager_title)
+                .setTitleRes(R.string.smart_battery_manager_title)
                 .launch();
 
     }
diff --git a/src/com/android/settings/inputmethod/UserDictionarySettings.java b/src/com/android/settings/inputmethod/UserDictionarySettings.java
index e80fdf3..2613d97 100644
--- a/src/com/android/settings/inputmethod/UserDictionarySettings.java
+++ b/src/com/android/settings/inputmethod/UserDictionarySettings.java
@@ -191,7 +191,7 @@
         new SubSettingLauncher(getContext())
                 .setDestination(UserDictionaryAddWordFragment.class.getName())
                 .setArguments(args)
-                .setTitle(R.string.user_dict_settings_add_dialog_title)
+                .setTitleRes(R.string.user_dict_settings_add_dialog_title)
                 .setSourceMetricsCategory(getMetricsCategory())
                 .launch();
 
diff --git a/src/com/android/settings/language/PhoneLanguagePreferenceController.java b/src/com/android/settings/language/PhoneLanguagePreferenceController.java
index af60ba0..f3f78d2 100644
--- a/src/com/android/settings/language/PhoneLanguagePreferenceController.java
+++ b/src/com/android/settings/language/PhoneLanguagePreferenceController.java
@@ -74,7 +74,7 @@
         new SubSettingLauncher(mContext)
                 .setDestination(LocaleListEditor.class.getName())
                 .setSourceMetricsCategory(MetricsProto.MetricsEvent.SETTINGS_LANGUAGE_CATEGORY)
-                .setTitle(R.string.pref_title_lang_selection)
+                .setTitleRes(R.string.pref_title_lang_selection)
                 .launch();
         return true;
     }
diff --git a/src/com/android/settings/location/RecentLocationRequestPreferenceController.java b/src/com/android/settings/location/RecentLocationRequestPreferenceController.java
index f4ae15b..6953e26 100644
--- a/src/com/android/settings/location/RecentLocationRequestPreferenceController.java
+++ b/src/com/android/settings/location/RecentLocationRequestPreferenceController.java
@@ -62,7 +62,7 @@
             new SubSettingLauncher(mFragment.getContext())
                     .setDestination(AppInfoDashboardFragment.class.getName())
                     .setArguments(args)
-                    .setTitle(R.string.application_info_label)
+                    .setTitleRes(R.string.application_info_label)
                     .setUserHandle(mUserHandle)
                     .setSourceMetricsCategory(mFragment.getMetricsCategory())
                     .launch();
diff --git a/src/com/android/settings/notification/NotificationSettingsBase.java b/src/com/android/settings/notification/NotificationSettingsBase.java
index 6006162..9f53334 100644
--- a/src/com/android/settings/notification/NotificationSettingsBase.java
+++ b/src/com/android/settings/notification/NotificationSettingsBase.java
@@ -20,7 +20,6 @@
 import static android.app.NotificationManager.IMPORTANCE_NONE;
 import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
 
-import android.app.Activity;
 import android.app.Notification;
 import android.app.NotificationChannel;
 import android.app.NotificationChannelGroup;
@@ -286,7 +285,7 @@
         channelPref.setIntent(new SubSettingLauncher(getActivity())
                 .setDestination(ChannelNotificationSettings.class.getName())
                 .setArguments(channelArgs)
-                .setTitle(R.string.notification_channel_title)
+                .setTitleRes(R.string.notification_channel_title)
                 .setSourceMetricsCategory(getMetricsCategory())
                 .toIntent());
 
diff --git a/src/com/android/settings/notification/RecentNotifyingAppsPreferenceController.java b/src/com/android/settings/notification/RecentNotifyingAppsPreferenceController.java
index 8081e4e..9b142bb 100644
--- a/src/com/android/settings/notification/RecentNotifyingAppsPreferenceController.java
+++ b/src/com/android/settings/notification/RecentNotifyingAppsPreferenceController.java
@@ -220,7 +220,7 @@
 
             pref.setIntent(new SubSettingLauncher(mHost.getActivity())
                     .setDestination(AppNotificationSettings.class.getName())
-                    .setTitle(R.string.notifications_title)
+                    .setTitleRes(R.string.notifications_title)
                     .setArguments(args)
                     .setSourceMetricsCategory(
                             MetricsProto.MetricsEvent.MANAGE_APPLICATIONS_NOTIFICATIONS)
diff --git a/src/com/android/settings/notification/ZenModeVisEffectsCustomPreferenceController.java b/src/com/android/settings/notification/ZenModeVisEffectsCustomPreferenceController.java
index d0bf974..550fda4 100644
--- a/src/com/android/settings/notification/ZenModeVisEffectsCustomPreferenceController.java
+++ b/src/com/android/settings/notification/ZenModeVisEffectsCustomPreferenceController.java
@@ -59,7 +59,7 @@
         pref.setOnGearClickListener(p -> {
             new SubSettingLauncher(mContext)
                     .setDestination(ZenModeBlockedEffectsSettings.class.getName())
-                    .setTitle(R.string.zen_mode_what_to_block_title)
+                    .setTitleRes(R.string.zen_mode_what_to_block_title)
                     .setSourceMetricsCategory(MetricsProto.MetricsEvent.SETTINGS_ZEN_NOTIFICATIONS)
                     .launch();
         });
diff --git a/src/com/android/settings/search/DatabaseIndexingUtils.java b/src/com/android/settings/search/DatabaseIndexingUtils.java
index eaf69b7..d1df188 100644
--- a/src/com/android/settings/search/DatabaseIndexingUtils.java
+++ b/src/com/android/settings/search/DatabaseIndexingUtils.java
@@ -62,7 +62,7 @@
         final Intent searchDestination = new SubSettingLauncher(context)
                 .setDestination(className)
                 .setArguments(args)
-                .setTitle(screenTitle)
+                .setTitleText(screenTitle)
                 .setSourceMetricsCategory(sourceMetricsCategory)
                 .toIntent();
         searchDestination.putExtra(SettingsActivity.EXTRA_FRAGMENT_ARG_KEY, key)
diff --git a/src/com/android/settings/security/ChangeProfileScreenLockPreferenceController.java b/src/com/android/settings/security/ChangeProfileScreenLockPreferenceController.java
index c244e47..7b00ea1 100644
--- a/src/com/android/settings/security/ChangeProfileScreenLockPreferenceController.java
+++ b/src/com/android/settings/security/ChangeProfileScreenLockPreferenceController.java
@@ -77,7 +77,7 @@
         extras.putInt(Intent.EXTRA_USER_ID, mProfileChallengeUserId);
         new SubSettingLauncher(mContext)
                 .setDestination(ChooseLockGeneric.ChooseLockGenericFragment.class.getName())
-                .setTitle(R.string.lock_settings_picker_title_profile)
+                .setTitleRes(R.string.lock_settings_picker_title_profile)
                 .setSourceMetricsCategory(mHost.getMetricsCategory())
                 .setArguments(extras)
                 .launch();
diff --git a/src/com/android/settings/security/ChangeScreenLockPreferenceController.java b/src/com/android/settings/security/ChangeScreenLockPreferenceController.java
index 5188d1c..5b2216e 100644
--- a/src/com/android/settings/security/ChangeScreenLockPreferenceController.java
+++ b/src/com/android/settings/security/ChangeScreenLockPreferenceController.java
@@ -129,7 +129,7 @@
 
         new SubSettingLauncher(mContext)
                 .setDestination(ChooseLockGeneric.ChooseLockGenericFragment.class.getName())
-                .setTitle(R.string.lock_settings_picker_title)
+                .setTitleRes(R.string.lock_settings_picker_title)
                 .setSourceMetricsCategory(mHost.getMetricsCategory())
                 .launch();
         return true;
diff --git a/src/com/android/settings/security/LockUnificationPreferenceController.java b/src/com/android/settings/security/LockUnificationPreferenceController.java
index ca6dc2d..6e3328a 100644
--- a/src/com/android/settings/security/LockUnificationPreferenceController.java
+++ b/src/com/android/settings/security/LockUnificationPreferenceController.java
@@ -157,7 +157,7 @@
         extras.putInt(Intent.EXTRA_USER_ID, mProfileChallengeUserId);
         new SubSettingLauncher(mContext)
                 .setDestination(ChooseLockGeneric.ChooseLockGenericFragment.class.getName())
-                    .setTitle(R.string.lock_settings_picker_title_profile)
+                    .setTitleRes(R.string.lock_settings_picker_title_profile)
                 .setSourceMetricsCategory(mHost.getMetricsCategory())
                 .setArguments(extras)
                 .launch();
@@ -213,7 +213,7 @@
                 mCurrentProfilePassword);
         new SubSettingLauncher(mContext)
                 .setDestination(ChooseLockGeneric.ChooseLockGenericFragment.class.getName())
-                .setTitle(R.string.lock_settings_picker_title)
+                .setTitleRes(R.string.lock_settings_picker_title)
                 .setSourceMetricsCategory(mHost.getMetricsCategory())
                 .launch();
     }
diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java
index 2c8eed5..52a3692 100644
--- a/src/com/android/settings/users/UserSettings.java
+++ b/src/com/android/settings/users/UserSettings.java
@@ -451,7 +451,7 @@
             new SubSettingLauncher(getContext())
                     .setDestination(UserDetailsSettings.class.getName())
                     .setArguments(extras)
-                    .setTitle(R.string.user_guest)
+                    .setTitleRes(R.string.user_guest)
                     .setSourceMetricsCategory(getMetricsCategory())
                     .launch();
             return;
@@ -464,7 +464,7 @@
             new SubSettingLauncher(getContext())
                     .setDestination(RestrictedProfileSettings.class.getName())
                     .setArguments(extras)
-                    .setTitle(R.string.user_restrictions_title)
+                    .setTitleRes(R.string.user_restrictions_title)
                     .setSourceMetricsCategory(getMetricsCategory())
                     .launch();
         } else if (info.id == UserHandle.myUserId()) {
@@ -476,7 +476,7 @@
             new SubSettingLauncher(getContext())
                     .setDestination(UserDetailsSettings.class.getName())
                     .setArguments(extras)
-                    .setTitle(info.name)
+                    .setTitleText(info.name)
                     .setSourceMetricsCategory(getMetricsCategory())
                     .launch();
         }
diff --git a/src/com/android/settings/vpn2/AppManagementFragment.java b/src/com/android/settings/vpn2/AppManagementFragment.java
index 1d77caf..50c578f 100644
--- a/src/com/android/settings/vpn2/AppManagementFragment.java
+++ b/src/com/android/settings/vpn2/AppManagementFragment.java
@@ -105,7 +105,7 @@
         new SubSettingLauncher(context)
                 .setDestination(AppManagementFragment.class.getName())
                 .setArguments(args)
-                .setTitle(pref.getLabel())
+                .setTitleText(pref.getLabel())
                 .setSourceMetricsCategory(sourceMetricsCategory)
                 .setUserHandle(new UserHandle(pref.getUserId()))
                 .launch();
diff --git a/src/com/android/settings/wallpaper/WallpaperSuggestionActivity.java b/src/com/android/settings/wallpaper/WallpaperSuggestionActivity.java
index 80910a1..0cc05e0 100644
--- a/src/com/android/settings/wallpaper/WallpaperSuggestionActivity.java
+++ b/src/com/android/settings/wallpaper/WallpaperSuggestionActivity.java
@@ -52,7 +52,7 @@
         // fall back to default wallpaper picker
         new SubSettingLauncher(this)
                 .setDestination(WallpaperTypeSettings.class.getName())
-                .setTitle(R.string.wallpaper_suggestion_title)
+                .setTitleRes(R.string.wallpaper_suggestion_title)
                 .setSourceMetricsCategory(MetricsProto.MetricsEvent.DASHBOARD_SUMMARY)
                 .addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT)
                 .launch();
diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java
index 209e64a..98499ec 100644
--- a/src/com/android/settings/wifi/WifiSettings.java
+++ b/src/com/android/settings/wifi/WifiSettings.java
@@ -914,7 +914,7 @@
 
     private void launchNetworkDetailsFragment(ConnectedAccessPointPreference pref) {
         new SubSettingLauncher(getContext())
-                .setTitle(R.string.pref_title_network_details)
+                .setTitleRes(R.string.pref_title_network_details)
                 .setDestination(WifiNetworkDetailsFragment.class.getName())
                 .setArguments(pref.getExtras())
                 .setSourceMetricsCategory(getMetricsCategory())
@@ -973,7 +973,7 @@
         final LinkifyUtils.OnClickListener clickListener =
                 () -> new SubSettingLauncher(getContext())
                         .setDestination(ScanningSettings.class.getName())
-                        .setTitle(R.string.location_scanning_screen_title)
+                        .setTitleRes(R.string.location_scanning_screen_title)
                         .setSourceMetricsCategory(getMetricsCategory())
                         .launch();
         mStatusMessagePreference.setText(title, description, clickListener);
