diff --git a/res/values/strings.xml b/res/values/strings.xml
index 50db816..a5076e4 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -2625,7 +2625,7 @@
     <!-- Applications settings screen, setting check box title. If checked, the system will send package verification requests to package verifiers on the device who will ultimately allow or reject the installation of applications. [CHAR LIMIT=30] -->
     <string name="verify_applications">Verify apps</string>
     <!-- Applications settings screen, setting check box summary. This is the summary for "App Check" checkbox. [CHAR LIMIT=none] -->
-    <string name="verify_applications_summary">Allow Google to regularly check all apps and disallow or warn about potential harm</string>
+    <string name="verify_applications_summary">Regularly check all apps and disallow or warn about those that may cause harm</string>
     <!-- Applications settings screen, setting check box title. If checked, applications show more settings options. -->
     <string name="advanced_settings">Advanced settings</string>
     <!-- Applications settings screen, setting check box summary.  This is the summary for "Advanced settings" checkbox  -->
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index 793709b..db44444 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -226,7 +226,8 @@
             R.id.accessibility_settings,
             R.id.print_settings,
             R.id.nfc_payment_settings,
-            R.id.home_settings
+            R.id.home_settings,
+            R.id.dashboard
     };
 
     private static final String[] ENTRY_FRAGMENTS = {
diff --git a/src/com/android/settings/SettingsPreferenceFragment.java b/src/com/android/settings/SettingsPreferenceFragment.java
index d91c11b..35893ff 100644
--- a/src/com/android/settings/SettingsPreferenceFragment.java
+++ b/src/com/android/settings/SettingsPreferenceFragment.java
@@ -144,7 +144,7 @@
             Log.e(TAG, "Old dialog fragment not null!");
         }
         mDialogFragment = new SettingsDialogFragment(this, dialogId);
-        mDialogFragment.show(getActivity().getFragmentManager(), Integer.toString(dialogId));
+        mDialogFragment.show(getChildFragmentManager(), Integer.toString(dialogId));
     }
 
     public Dialog onCreateDialog(int dialogId) {
@@ -233,17 +233,15 @@
         public Dialog onCreateDialog(Bundle savedInstanceState) {
             if (savedInstanceState != null) {
                 mDialogId = savedInstanceState.getInt(KEY_DIALOG_ID, 0);
+                mParentFragment = getParentFragment();
                 int mParentFragmentId = savedInstanceState.getInt(KEY_PARENT_FRAGMENT_ID, -1);
-                if (mParentFragmentId > -1) {
-                    mParentFragment = getFragmentManager().findFragmentById(mParentFragmentId);
-                    if (!(mParentFragment instanceof DialogCreatable)) {
-                        throw new IllegalArgumentException(
-                                (mParentFragment != null
-                                        ? mParentFragment.getClass().getName()
-                                        : mParentFragmentId)
-                                + " must implement "
-                                + DialogCreatable.class.getName());
-                    }
+                if (!(mParentFragment instanceof DialogCreatable)) {
+                    throw new IllegalArgumentException(
+                            (mParentFragment != null
+                                    ? mParentFragment.getClass().getName()
+                                    : mParentFragmentId)
+                                    + " must implement "
+                                    + DialogCreatable.class.getName());
                 }
                 // This dialog fragment could be created from non-SettingsPreferenceFragment
                 if (mParentFragment instanceof SettingsPreferenceFragment) {
