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
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index e1d2225..3362a43 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -1325,6 +1325,7 @@
         </activity>
 
         <activity android:name="SetFullBackupPassword"
+                  android:label="@string/local_backup_password_title"
                 android:exported="false">
         </activity>
 
diff --git a/res/xml/accessibility_shortcut_service_settings.xml b/res/xml/accessibility_shortcut_service_settings.xml
new file mode 100644
index 0000000..573939a
--- /dev/null
+++ b/res/xml/accessibility_shortcut_service_settings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2017 The Android Open Source Project
+
+  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.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:title="@string/accessibility_shortcut_service_title" />
diff --git a/res/xml/app_data_usage.xml b/res/xml/app_data_usage.xml
index 26a339a..3e94135 100644
--- a/res/xml/app_data_usage.xml
+++ b/res/xml/app_data_usage.xml
@@ -14,8 +14,9 @@
      limitations under the License.
 -->
 
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
-                  android:title="@string/data_usage_summary_title">
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:title="@string/data_usage_app_summary_title">
 
     <com.android.settings.datausage.SpinnerPreference
         android:key="cycle" />
diff --git a/res/xml/app_storage_settings.xml b/res/xml/app_storage_settings.xml
index f3f2f75..ba18b1f 100644
--- a/res/xml/app_storage_settings.xml
+++ b/res/xml/app_storage_settings.xml
@@ -14,9 +14,10 @@
      limitations under the License.
 -->
 
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
-                  xmlns:settings="http://schemas.android.com/apk/res-auto"
-                  android:title="@string/application_info_label">
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/storage_label">
 
     <com.android.settings.widget.ActionButtonPreference
         android:key="header_view" />
diff --git a/res/xml/billing_cycle.xml b/res/xml/billing_cycle.xml
index 8c77ad6..7b61979 100644
--- a/res/xml/billing_cycle.xml
+++ b/res/xml/billing_cycle.xml
@@ -14,8 +14,9 @@
      limitations under the License.
 -->
 
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
-    android:title="@string/data_usage_summary_title">
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:title="@string/billing_cycle">
 
     <Preference
         android:key="billing_cycle"
diff --git a/res/xml/bluetooth_device_details_fragment.xml b/res/xml/bluetooth_device_details_fragment.xml
index 5a8609c..c8f5c1b 100644
--- a/res/xml/bluetooth_device_details_fragment.xml
+++ b/res/xml/bluetooth_device_details_fragment.xml
@@ -16,7 +16,7 @@
   -->
 <PreferenceScreen
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:title="@string/bluetooth_device_advanced_title">
+    android:title="@string/device_details_title">
 
     <com.android.settings.applications.LayoutPreference
         android:key="bluetooth_device_header"
diff --git a/res/xml/bluetooth_pairing_detail.xml b/res/xml/bluetooth_pairing_detail.xml
index 30eaf09..e60da75 100644
--- a/res/xml/bluetooth_pairing_detail.xml
+++ b/res/xml/bluetooth_pairing_detail.xml
@@ -16,7 +16,7 @@
 
 <PreferenceScreen
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:title="@string/bluetooth_settings">
+    android:title="@string/bluetooth_pairing_pref_title">
 
     <Preference
         android:key="device_name"/>
diff --git a/res/xml/current_dream_settings.xml b/res/xml/current_dream_settings.xml
new file mode 100644
index 0000000..d95e830
--- /dev/null
+++ b/res/xml/current_dream_settings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2017 The Android Open Source Project
+
+  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.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:title="@string/screensaver_settings_current" />
diff --git a/res/xml/data_usage_list.xml b/res/xml/data_usage_list.xml
index 64df9c3..41fbff8 100644
--- a/res/xml/data_usage_list.xml
+++ b/res/xml/data_usage_list.xml
@@ -14,8 +14,7 @@
      limitations under the License.
 -->
 
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
-    android:title="@string/data_usage_summary_title">
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
 
     <PreferenceCategory
         android:key="usage_amount">
diff --git a/res/xml/data_usage_metered_prefs.xml b/res/xml/data_usage_metered_prefs.xml
index aca87fb..ef0faf2 100644
--- a/res/xml/data_usage_metered_prefs.xml
+++ b/res/xml/data_usage_metered_prefs.xml
@@ -15,7 +15,7 @@
 -->
 
 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
-                  android:title="@string/display_settings">
+                  android:title="@string/network_restrictions">
 
     <PreferenceCategory
         android:key="mobile"
diff --git a/res/xml/default_assist_settings.xml b/res/xml/default_assist_settings.xml
new file mode 100644
index 0000000..e1f5900
--- /dev/null
+++ b/res/xml/default_assist_settings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2017 The Android Open Source Project
+
+  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.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:title="@string/default_assist_title" />
diff --git a/res/xml/default_autofill_settings.xml b/res/xml/default_autofill_settings.xml
new file mode 100644
index 0000000..ecf0877
--- /dev/null
+++ b/res/xml/default_autofill_settings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2017 The Android Open Source Project
+
+  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.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:title="@string/autofill_app" />
diff --git a/res/xml/default_browser_settings.xml b/res/xml/default_browser_settings.xml
new file mode 100644
index 0000000..a319a7c
--- /dev/null
+++ b/res/xml/default_browser_settings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2017 The Android Open Source Project
+
+  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.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:title="@string/default_browser_title" />
diff --git a/res/xml/default_emergency_settings.xml b/res/xml/default_emergency_settings.xml
new file mode 100644
index 0000000..db418eb
--- /dev/null
+++ b/res/xml/default_emergency_settings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2017 The Android Open Source Project
+
+  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.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:title="@string/default_emergency_app" />
diff --git a/res/xml/default_home_settings.xml b/res/xml/default_home_settings.xml
new file mode 100644
index 0000000..136f8cc
--- /dev/null
+++ b/res/xml/default_home_settings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2017 The Android Open Source Project
+
+  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.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:title="@string/home_app" />
diff --git a/res/xml/default_phone_settings.xml b/res/xml/default_phone_settings.xml
new file mode 100644
index 0000000..1ae3ab1
--- /dev/null
+++ b/res/xml/default_phone_settings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2017 The Android Open Source Project
+
+  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.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:title="@string/default_phone_title" />
diff --git a/res/xml/default_sms_settings.xml b/res/xml/default_sms_settings.xml
new file mode 100644
index 0000000..0a8bcc3
--- /dev/null
+++ b/res/xml/default_sms_settings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2017 The Android Open Source Project
+
+  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.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:title="@string/sms_application_title" />
diff --git a/res/xml/default_voice_settings.xml b/res/xml/default_voice_settings.xml
new file mode 100644
index 0000000..f75b5ed
--- /dev/null
+++ b/res/xml/default_voice_settings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2017 The Android Open Source Project
+
+  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.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:title="@string/voice_input_settings_title" />
diff --git a/res/xml/development_tile_settings.xml b/res/xml/development_tile_settings.xml
new file mode 100644
index 0000000..f0f71c0
--- /dev/null
+++ b/res/xml/development_tile_settings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2017 The Android Open Source Project
+
+  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.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:title="@string/quick_settings_developer_tiles" />
diff --git a/res/xml/feature_flags_settings.xml b/res/xml/feature_flags_settings.xml
new file mode 100644
index 0000000..db652ff
--- /dev/null
+++ b/res/xml/feature_flags_settings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2017 The Android Open Source Project
+
+  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.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:title="@string/feature_flags_dashboard_title" />
diff --git a/res/xml/inactive_apps.xml b/res/xml/inactive_apps.xml
index 27fda55..6f93bdb 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.
 -->
 
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:title="@string/inactive_apps_title">
 
 </PreferenceScreen>
 
diff --git a/res/xml/installed_app_launch_settings.xml b/res/xml/installed_app_launch_settings.xml
index ac77be1..a2a0ca4 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.
 -->
 
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
-                  android:title="@string/application_info_label">
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:title="@string/launch_by_default">
 
     <PreferenceCategory android:key="app_launch_domain_links"
                         android:title="@string/app_launch_domain_links_title">
diff --git a/res/xml/manage_domain_url_settings.xml b/res/xml/manage_domain_url_settings.xml
new file mode 100644
index 0000000..e4e4e47
--- /dev/null
+++ b/res/xml/manage_domain_url_settings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2017 The Android Open Source Project
+
+  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.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:title="@string/domain_urls_title" />
diff --git a/res/xml/nfc_payment_settings.xml b/res/xml/nfc_payment_settings.xml
index 9b47dda..9a5185c 100644
--- a/res/xml/nfc_payment_settings.xml
+++ b/res/xml/nfc_payment_settings.xml
@@ -14,5 +14,7 @@
      limitations under the License.
 -->
 
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:title="@string/nfc_payment_settings_title">
 </PreferenceScreen>
diff --git a/res/xml/notification_access_settings.xml b/res/xml/notification_access_settings.xml
new file mode 100644
index 0000000..1300140
--- /dev/null
+++ b/res/xml/notification_access_settings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2017 The Android Open Source Project
+
+  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.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:title="@string/manage_notification_access_title" />
diff --git a/res/xml/picture_in_picture_settings.xml b/res/xml/picture_in_picture_settings.xml
new file mode 100644
index 0000000..b7091df
--- /dev/null
+++ b/res/xml/picture_in_picture_settings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2017 The Android Open Source Project
+
+  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.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:title="@string/picture_in_picture_title" />
diff --git a/res/xml/premium_sms_settings.xml b/res/xml/premium_sms_settings.xml
new file mode 100644
index 0000000..7bcf11e
--- /dev/null
+++ b/res/xml/premium_sms_settings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2017 The Android Open Source Project
+
+  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.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:title="@string/premium_sms_access" />
diff --git a/res/xml/process_stats_ui.xml b/res/xml/process_stats_ui.xml
index ba9066e..84dccab 100644
--- a/res/xml/process_stats_ui.xml
+++ b/res/xml/process_stats_ui.xml
@@ -16,7 +16,7 @@
 
 <PreferenceScreen
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:title="@string/app_memory_use">
+    android:title="@string/memory_usage_apps">
 
     <PreferenceCategory
         android:key="app_list"
diff --git a/res/xml/tether_prefs.xml b/res/xml/tether_prefs.xml
index 1378bba..ce22ad7 100644
--- a/res/xml/tether_prefs.xml
+++ b/res/xml/tether_prefs.xml
@@ -14,8 +14,10 @@
      limitations under the License.
 -->
 
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
-                  xmlns:settings="http://schemas.android.com/apk/res-auto">
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/tether_settings_title_all">
 
     <com.android.settings.widget.MasterSwitchPreference
         android:key="wifi_tether"
diff --git a/res/xml/unrestricted_data_access_settings.xml b/res/xml/unrestricted_data_access_settings.xml
new file mode 100644
index 0000000..da8ff0c
--- /dev/null
+++ b/res/xml/unrestricted_data_access_settings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2017 The Android Open Source Project
+
+  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.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:title="@string/unrestricted_data_saver" />
diff --git a/res/xml/vpn_app_management.xml b/res/xml/vpn_app_management.xml
index c044a58..2cf1498 100644
--- a/res/xml/vpn_app_management.xml
+++ b/res/xml/vpn_app_management.xml
@@ -15,8 +15,7 @@
 -->
 
 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
-        xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
-        android:title="@string/vpn_title">
+        xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
 
         <Preference
                 android:key="version"
diff --git a/res/xml/vr_display_settings.xml b/res/xml/vr_display_settings.xml
new file mode 100644
index 0000000..d04435a
--- /dev/null
+++ b/res/xml/vr_display_settings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2017 The Android Open Source Project
+
+  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.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:title="@string/display_vr_pref_title" />
diff --git a/res/xml/vr_listeners_settings.xml b/res/xml/vr_listeners_settings.xml
new file mode 100644
index 0000000..1954596
--- /dev/null
+++ b/res/xml/vr_listeners_settings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2017 The Android Open Source Project
+
+  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.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:title="@string/vr_listeners_title" />
diff --git a/res/xml/webview_app_settings.xml b/res/xml/webview_app_settings.xml
new file mode 100644
index 0000000..c7a611a
--- /dev/null
+++ b/res/xml/webview_app_settings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2017 The Android Open Source Project
+
+  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.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:title="@string/select_webview_provider_title" />
diff --git a/res/xml/when_to_dream_settings.xml b/res/xml/when_to_dream_settings.xml
new file mode 100644
index 0000000..7b91a34
--- /dev/null
+++ b/res/xml/when_to_dream_settings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2017 The Android Open Source Project
+
+  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.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:title="@string/screensaver_settings_when_to_dream" />
diff --git a/res/xml/wifi_display_settings.xml b/res/xml/wifi_display_settings.xml
index 81fb701..2be31d2 100644
--- a/res/xml/wifi_display_settings.xml
+++ b/res/xml/wifi_display_settings.xml
@@ -15,6 +15,6 @@
 -->
 
 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
-    android:title="@string/wifi_saved_access_points_titlebar">
+    android:title="@string/wifi_display_settings_title">
 
 </PreferenceScreen>
diff --git a/res/xml/wifi_p2p_settings.xml b/res/xml/wifi_p2p_settings.xml
index 0bdc1cf..405d081 100644
--- a/res/xml/wifi_p2p_settings.xml
+++ b/res/xml/wifi_p2p_settings.xml
@@ -14,7 +14,9 @@
      limitations under the License.
 -->
 
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:title="@string/wifi_p2p_settings_title">
     <Preference
         android:key="p2p_this_device"
         android:selectable="false" />
diff --git a/res/xml/wifi_tether_settings.xml b/res/xml/wifi_tether_settings.xml
index feed268..d6b8a25 100644
--- a/res/xml/wifi_tether_settings.xml
+++ b/res/xml/wifi_tether_settings.xml
@@ -15,7 +15,9 @@
   limitations under the License.
   -->
 
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:title="@string/wifi_hotspot_checkbox_text">
 
     <com.android.settings.widget.ValidatedEditTextPreference
         android:key="wifi_tether_network_name"
diff --git a/res/xml/zen_access_settings.xml b/res/xml/zen_access_settings.xml
new file mode 100644
index 0000000..35cfdb8
--- /dev/null
+++ b/res/xml/zen_access_settings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2017 The Android Open Source Project
+
+  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.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:title="@string/manage_zen_access_title" />
diff --git a/src/com/android/settings/DeviceAdminSettings.java b/src/com/android/settings/DeviceAdminSettings.java
index 4ae900a..00f4d9c 100644
--- a/src/com/android/settings/DeviceAdminSettings.java
+++ b/src/com/android/settings/DeviceAdminSettings.java
@@ -49,6 +49,7 @@
 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 @@
         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 2c97018..bac0a61 100644
--- a/src/com/android/settings/MasterClear.java
+++ b/src/com/android/settings/MasterClear.java
@@ -21,6 +21,7 @@
 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 @@
         }
     };
 
+    @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 1529e77..b5b8a18 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 @@
     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 5209cc7..68050b1 100644
--- a/src/com/android/settings/ScreenPinningSettings.java
+++ b/src/com/android/settings/ScreenPinningSettings.java
@@ -65,6 +65,9 @@
         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 587e814..12524b9 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.WRAP_CONTENT;
 
 import android.animation.LayoutTransition;
+import android.annotation.StringRes;
 import android.annotation.UiThread;
 import android.app.Activity;
 import android.app.KeyguardManager;
@@ -91,6 +92,12 @@
     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 6cf1ae0..f34b7a7 100644
--- a/src/com/android/settings/UserCredentialsSettings.java
+++ b/src/com/android/settings/UserCredentialsSettings.java
@@ -18,6 +18,7 @@
 
 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 @@
         }
     }
 
+    @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 fd48c39..0fbf5fa 100644
--- a/src/com/android/settings/accessibility/AccessibilitySettings.java
+++ b/src/com/android/settings/accessibility/AccessibilitySettings.java
@@ -20,6 +20,7 @@
 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 @@
     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 @@
         }
 
         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 @@
             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 4e95cad..0f6bdd7 100644
--- a/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceFragment.java
+++ b/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceFragment.java
@@ -24,7 +24,6 @@
 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 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) -> {
@@ -80,6 +81,11 @@
     }
 
     @Override
+    protected int getPreferenceScreenResId() {
+        return R.xml.accessibility_shortcut_settings;
+    }
+
+    @Override
     protected void onInstallSwitchBarToggleSwitch() {
         super.onInstallSwitchBarToggleSwitch();
         mSwitchBar.addOnSwitchChangeListener((Switch switchView, boolean enabled) -> {
diff --git a/src/com/android/settings/accessibility/ShortcutServicePickerFragment.java b/src/com/android/settings/accessibility/ShortcutServicePickerFragment.java
index f66a5e2..5b0e76d 100644
--- a/src/com/android/settings/accessibility/ShortcutServicePickerFragment.java
+++ b/src/com/android/settings/accessibility/ShortcutServicePickerFragment.java
@@ -34,6 +34,7 @@
 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;
@@ -54,6 +55,11 @@
     }
 
     @Override
+    protected int getPreferenceScreenResId() {
+        return R.xml.accessibility_shortcut_service_settings;
+    }
+
+    @Override
     protected List<? extends DefaultAppInfo> getCandidates() {
         final Context context = getContext();
         final AccessibilityManager accessibilityManager = context
diff --git a/src/com/android/settings/accessibility/ToggleAutoclickPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleAutoclickPreferenceFragment.java
index 16df03e..5fa38e1 100644
--- a/src/com/android/settings/accessibility/ToggleAutoclickPreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleAutoclickPreferenceFragment.java
@@ -110,10 +110,17 @@
     }
 
     @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 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 64d38af..6ee7217 100644
--- a/src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java
@@ -50,7 +50,9 @@
     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");
 
@@ -62,6 +64,11 @@
     }
 
     @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 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 f66fb4d..213e585 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 @@
     @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 @@
         // 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 @@
         }
 
         // 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 c200d17..dbd269a 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;
@@ -55,6 +56,12 @@
     }
 
     @Override
+    @StringRes
+    protected int getTitle() {
+        return R.string.title_font_size;
+    }
+
+    @Override
     protected Configuration createConfig(Configuration origConfig, int index) {
         // Populate the sample layouts.
         final Configuration config = new Configuration(origConfig);
diff --git a/src/com/android/settings/applications/BackgroundCheckSummary.java b/src/com/android/settings/applications/BackgroundCheckSummary.java
index dd5c89c..1b8a787 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 @@
 
         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 c5e6d77..192cd14 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.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
@@ -45,6 +47,14 @@
     }
 
     @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) {
         View rootView = inflater.inflate(R.layout.convert_fbe, null);
diff --git a/src/com/android/settings/applications/InstalledAppDetails.java b/src/com/android/settings/applications/InstalledAppDetails.java
index ccd91fd..1df3aef 100755
--- a/src/com/android/settings/applications/InstalledAppDetails.java
+++ b/src/com/android/settings/applications/InstalledAppDetails.java
@@ -930,11 +930,11 @@
         }
     }
 
-    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 @@
         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 @@
     @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 @@
                 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 @@
                 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 @@
                     @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 b9e251c..ce919e1 100644
--- a/src/com/android/settings/applications/ManageDomainUrls.java
+++ b/src/com/android/settings/applications/ManageDomainUrls.java
@@ -63,7 +63,11 @@
     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 5569a4e..9b8a897 100644
--- a/src/com/android/settings/applications/PictureInPictureSettings.java
+++ b/src/com/android/settings/applications/PictureInPictureSettings.java
@@ -147,7 +147,9 @@
         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
@@ -199,6 +201,11 @@
     }
 
     @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 70bc17c..94945a9 100644
--- a/src/com/android/settings/applications/PremiumSmsAccess.java
+++ b/src/com/android/settings/applications/PremiumSmsAccess.java
@@ -81,6 +81,11 @@
     }
 
     @Override
+    protected int getPreferenceScreenResId() {
+        return R.xml.premium_sms_settings;
+    }
+
+    @Override
     public int getMetricsCategory() {
         return MetricsProto.MetricsEvent.PREMIUM_SMS_ACCESS;
     }
@@ -119,8 +124,14 @@
         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 @@
             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 634fefd..c79b704 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;
@@ -109,6 +110,12 @@
     }
 
     @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 99340b1..e40e3f9 100644
--- a/src/com/android/settings/applications/VrListenerSettings.java
+++ b/src/com/android/settings/applications/VrListenerSettings.java
@@ -58,6 +58,11 @@
         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 07bc809..01ca25a 100644
--- a/src/com/android/settings/applications/assist/DefaultAssistPicker.java
+++ b/src/com/android/settings/applications/assist/DefaultAssistPicker.java
@@ -65,6 +65,11 @@
     }
 
     @Override
+    protected int getPreferenceScreenResId() {
+        return R.xml.default_assist_settings;
+    }
+
+    @Override
     protected List<DefaultAppInfo> getCandidates() {
         mAvailableAssistants.clear();
         addAssistServices();
diff --git a/src/com/android/settings/applications/assist/DefaultVoiceInputPicker.java b/src/com/android/settings/applications/assist/DefaultVoiceInputPicker.java
index 5adda23..7a5c13d 100644
--- a/src/com/android/settings/applications/assist/DefaultVoiceInputPicker.java
+++ b/src/com/android/settings/applications/assist/DefaultVoiceInputPicker.java
@@ -24,6 +24,7 @@
 
 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;
@@ -55,6 +56,11 @@
     }
 
     @Override
+    protected int getPreferenceScreenResId() {
+        return R.xml.default_voice_settings;
+    }
+
+    @Override
     protected List<VoiceInputDefaultAppInfo> getCandidates() {
         final List<VoiceInputDefaultAppInfo> candidates = new ArrayList<>();
         final Context context = getContext();
diff --git a/src/com/android/settings/applications/defaultapps/DefaultAutofillPicker.java b/src/com/android/settings/applications/defaultapps/DefaultAutofillPicker.java
index cc85f77..00dedf9 100644
--- a/src/com/android/settings/applications/defaultapps/DefaultAutofillPicker.java
+++ b/src/com/android/settings/applications/defaultapps/DefaultAutofillPicker.java
@@ -18,9 +18,7 @@
 
 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.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;
@@ -106,6 +103,11 @@
     }
 
     @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 fb9c3bf..2639c8d 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.ResolveInfo;
 
 import com.android.internal.logging.nano.MetricsProto;
+import com.android.settings.R;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -31,6 +32,11 @@
 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 8f8c64e..bafd56f 100644
--- a/src/com/android/settings/applications/defaultapps/DefaultEmergencyPicker.java
+++ b/src/com/android/settings/applications/defaultapps/DefaultEmergencyPicker.java
@@ -40,6 +40,11 @@
     }
 
     @Override
+    protected int getPreferenceScreenResId() {
+        return R.xml.default_emergency_settings;
+    }
+
+    @Override
     protected List<DefaultAppInfo> getCandidates() {
         final List<DefaultAppInfo> candidates = new ArrayList<>();
         final List<ResolveInfo> infos = mPm.getPackageManager().queryIntentActivities(
diff --git a/src/com/android/settings/applications/defaultapps/DefaultHomePicker.java b/src/com/android/settings/applications/defaultapps/DefaultHomePicker.java
index 75f5292..63efc44 100644
--- a/src/com/android/settings/applications/defaultapps/DefaultHomePicker.java
+++ b/src/com/android/settings/applications/defaultapps/DefaultHomePicker.java
@@ -44,6 +44,11 @@
     }
 
     @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 9f6cc4d..6a1d919 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.text.TextUtils;
 
 import com.android.internal.logging.nano.MetricsProto;
+import com.android.settings.R;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -44,6 +45,11 @@
     }
 
     @Override
+    protected int getPreferenceScreenResId() {
+        return R.xml.default_phone_settings;
+    }
+
+    @Override
     protected List<DefaultAppInfo> getCandidates() {
         final List<DefaultAppInfo> candidates = new ArrayList<>();
         final List<String> dialerPackages =
diff --git a/src/com/android/settings/applications/defaultapps/DefaultSmsPicker.java b/src/com/android/settings/applications/defaultapps/DefaultSmsPicker.java
index 57159b3..4c6c9ce 100644
--- a/src/com/android/settings/applications/defaultapps/DefaultSmsPicker.java
+++ b/src/com/android/settings/applications/defaultapps/DefaultSmsPicker.java
@@ -40,6 +40,11 @@
     }
 
     @Override
+    protected int getPreferenceScreenResId() {
+        return R.xml.default_sms_settings;
+    }
+
+    @Override
     protected List<DefaultAppInfo> getCandidates() {
         final Context context = getContext();
         final Collection<SmsApplication.SmsApplicationData> smsApplications =
diff --git a/src/com/android/settings/applications/manageapplications/ManageApplications.java b/src/com/android/settings/applications/manageapplications/ManageApplications.java
index 3caa8ab..33762e4 100644
--- a/src/com/android/settings/applications/manageapplications/ManageApplications.java
+++ b/src/com/android/settings/applications/manageapplications/ManageApplications.java
@@ -223,10 +223,13 @@
     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 @@
                 || 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 @@
             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 @@
             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 63f6054..35cfbbc 100644
--- a/src/com/android/settings/datausage/DataUsagePreference.java
+++ b/src/com/android/settings/datausage/DataUsagePreference.java
@@ -16,23 +16,36 @@
 
 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 @@
         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 c60b841..8fad986 100644
--- a/src/com/android/settings/datausage/UnrestrictedDataAccess.java
+++ b/src/com/android/settings/datausage/UnrestrictedDataAccess.java
@@ -59,7 +59,11 @@
     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 @@
             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 2d58dd8..00a77df 100644
--- a/src/com/android/settings/datetime/ZonePicker.java
+++ b/src/com/android/settings/datetime/ZonePicker.java
@@ -34,6 +34,7 @@
 
 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 @@
         // 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 998e431..c482d87 100644
--- a/src/com/android/settings/development/featureflags/FeatureFlagsDashboard.java
+++ b/src/com/android/settings/development/featureflags/FeatureFlagsDashboard.java
@@ -42,7 +42,7 @@
 
     @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 c822de0..ca4181e 100644
--- a/src/com/android/settings/development/qstile/DevelopmentTileConfigFragment.java
+++ b/src/com/android/settings/development/qstile/DevelopmentTileConfigFragment.java
@@ -29,7 +29,6 @@
 public class DevelopmentTileConfigFragment extends DashboardFragment {
     private static final String TAG = "DevelopmentTileConfig";
 
-
     @Override
     protected String getLogTag() {
         return TAG;
@@ -37,7 +36,7 @@
 
     @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 ec3999b..ab92155 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;
@@ -99,6 +100,12 @@
     }
 
     @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 bccdaa5..5487c46 100644
--- a/src/com/android/settings/display/VrDisplayPreferencePicker.java
+++ b/src/com/android/settings/display/VrDisplayPreferencePicker.java
@@ -33,6 +33,11 @@
     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 da9bf9e..f0d520c 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;
@@ -41,6 +41,11 @@
     }
 
     @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 a55064d..7031bdf 100644
--- a/src/com/android/settings/dream/WhenToDreamPicker.java
+++ b/src/com/android/settings/dream/WhenToDreamPicker.java
@@ -38,6 +38,11 @@
     }
 
     @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 fe264f3..e40fc21 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 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 10f1154..66d1103 100644
--- a/src/com/android/settings/nfc/PaymentSettings.java
+++ b/src/com/android/settings/nfc/PaymentSettings.java
@@ -58,8 +58,14 @@
         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<PaymentBackend.PaymentAppInfo> appInfos = mPaymentBackend.getPaymentAppInfos();
         if (appInfos != null && appInfos.size() > 0) {
@@ -71,7 +77,9 @@
                     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 3f8ccc6..2b5998e 100644
--- a/src/com/android/settings/notification/EmptyTextSettings.java
+++ b/src/com/android/settings/notification/EmptyTextSettings.java
@@ -32,6 +32,17 @@
     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);
         mEmpty = new TextView(getContext());
@@ -47,4 +58,9 @@
     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 858482c..af89f49 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 @@
     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 @@
         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 238c11e..44052b1 100644
--- a/src/com/android/settings/notification/ZenAccessSettings.java
+++ b/src/com/android/settings/notification/ZenAccessSettings.java
@@ -21,9 +21,7 @@
 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.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.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 @@
         mContext = getActivity();
         mPkgMan = mContext.getPackageManager();
         mNoMan = mContext.getSystemService(NotificationManager.class);
-        setPreferenceScreen(getPreferenceManager().createPreferenceScreen(mContext));
+        if (!usePreferenceScreenTitle()) {
+            setPreferenceScreen(getPreferenceManager().createPreferenceScreen(mContext));
+        }
     }
 
     @Override
@@ -90,6 +88,11 @@
     }
 
     @Override
+    protected int getPreferenceScreenResId() {
+        return R.xml.zen_access_settings;
+    }
+
+    @Override
     public void onResume() {
         super.onResume();
         if (!ActivityManager.isLowRamDeviceStatic()) {
diff --git a/src/com/android/settings/webview/WebViewAppPicker.java b/src/com/android/settings/webview/WebViewAppPicker.java
index 536cd8b..0e9fc39 100644
--- a/src/com/android/settings/webview/WebViewAppPicker.java
+++ b/src/com/android/settings/webview/WebViewAppPicker.java
@@ -58,6 +58,11 @@
     }
 
     @Override
+    protected int getPreferenceScreenResId() {
+        return R.xml.webview_app_settings;
+    }
+
+    @Override
     protected List<DefaultAppInfo> getCandidates() {
         final List<DefaultAppInfo> packageInfoList = new ArrayList<DefaultAppInfo>();
         final Context context = getContext();
diff --git a/src/com/android/settings/widget/RadioButtonPickerFragment.java b/src/com/android/settings/widget/RadioButtonPickerFragment.java
index d736319..f1df0a5 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 @@
     @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();
     }
 
@@ -114,6 +116,13 @@
     }
 
     /**
+     * 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.
      */
     @VisibleForTesting(otherwise = VisibleForTesting.PROTECTED)
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 92e92fc..0839a02 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 @@
     }
 
     @Test
-    public void shouldUsePlaceholderPreferenceLayout() {
+    public void shouldUseFeatureFlagPreferenceLayout() {
         assertThat(mDashboard.getPreferenceScreenResId())
-                .isEqualTo(R.xml.placeholder_prefs);
+                .isEqualTo(R.xml.feature_flags_settings);
     }
 }