diff --git a/src/com/android/settings/SecuritySettings.java b/src/com/android/settings/SecuritySettings.java
index 940b3e0..7013154 100644
--- a/src/com/android/settings/SecuritySettings.java
+++ b/src/com/android/settings/SecuritySettings.java
@@ -508,7 +508,7 @@
         final LockPatternUtils lockPatternUtils = mChooseLockSettingsHelper.utils();
         if (KEY_UNLOCK_SET_OR_CHANGE.equals(key)) {
             startFragment(this, "com.android.settings.ChooseLockGeneric$ChooseLockGenericFragment",
-                    SET_OR_CHANGE_LOCK_METHOD_REQUEST, null);
+                    R.string.lock_settings_picker_title, SET_OR_CHANGE_LOCK_METHOD_REQUEST, null);
         } else if (KEY_BIOMETRIC_WEAK_IMPROVE_MATCHING.equals(key)) {
             ChooseLockSettingsHelper helper =
                     new ChooseLockSettingsHelper(this.getActivity(), this);
diff --git a/src/com/android/settings/SettingsPreferenceFragment.java b/src/com/android/settings/SettingsPreferenceFragment.java
index eb2bea9..8661956 100644
--- a/src/com/android/settings/SettingsPreferenceFragment.java
+++ b/src/com/android/settings/SettingsPreferenceFragment.java
@@ -16,6 +16,7 @@
 
 package com.android.settings;
 
+import android.app.Activity;
 import android.app.Dialog;
 import android.app.DialogFragment;
 import android.app.Fragment;
@@ -27,6 +28,7 @@
 import android.graphics.drawable.Drawable;
 import android.os.Bundle;
 import android.preference.Preference;
+import android.preference.PreferenceActivity;
 import android.preference.PreferenceFragment;
 import android.preference.PreferenceGroupAdapter;
 import android.text.TextUtils;
@@ -35,7 +37,6 @@
 import android.view.MenuInflater;
 import android.view.MenuItem;
 import android.view.View;
-import android.view.ViewGroup;
 import android.widget.Button;
 import android.widget.ListAdapter;
 import android.widget.ListView;
@@ -452,19 +453,23 @@
         getActivity().onBackPressed();
     }
 
-    public boolean startFragment(
-            Fragment caller, String fragmentClass, int requestCode, Bundle extras) {
-        if (getActivity() instanceof SettingsActivity) {
-            SettingsActivity sa = (SettingsActivity) getActivity();
-            sa.startPreferencePanel(fragmentClass, extras,
-                    R.string.lock_settings_picker_title, null, caller, requestCode);
+    public boolean startFragment(Fragment caller, String fragmentClass, int titleRes,
+            int requestCode, Bundle extras) {
+        final Activity activity = getActivity();
+        if (activity instanceof SettingsActivity) {
+            SettingsActivity sa = (SettingsActivity) activity;
+            sa.startPreferencePanel(fragmentClass, extras, titleRes, null, caller, requestCode);
+            return true;
+        } else if (activity instanceof PreferenceActivity) {
+            PreferenceActivity sa = (PreferenceActivity) activity;
+            sa.startPreferencePanel(fragmentClass, extras, titleRes, null, caller, requestCode);
             return true;
         } else {
-            Log.w(TAG, "Parent isn't Settings activity, thus there's no way to launch the "
-                    + "given Fragment (name: " + fragmentClass + ", requestCode: " + requestCode
-                    + ")");
+            Log.w(TAG,
+                    "Parent isn't SettingsActivity nor PreferenceActivity, thus there's no way to "
+                    + "launch the given Fragment (name: " + fragmentClass
+                    + ", requestCode: " + requestCode + ")");
             return false;
         }
     }
-
 }
diff --git a/src/com/android/settings/deviceinfo/Memory.java b/src/com/android/settings/deviceinfo/Memory.java
index 68d0d5f..fab3fbb 100644
--- a/src/com/android/settings/deviceinfo/Memory.java
+++ b/src/com/android/settings/deviceinfo/Memory.java
@@ -41,7 +41,6 @@
 import android.os.storage.StorageVolume;
 import android.preference.Preference;
 import android.preference.PreferenceScreen;
-import android.provider.SearchIndexableResource;
 import android.util.Log;
 import android.view.Menu;
 import android.view.MenuInflater;
@@ -193,11 +192,10 @@
                 if (getActivity() instanceof SettingsActivity) {
                     ((SettingsActivity) getActivity()).startPreferencePanel(
                             UsbSettings.class.getCanonicalName(),
-                            null,
-                            R.string.storage_title_usb, null,
-                            this, 0);
+                            null, R.string.storage_title_usb, null, this, 0);
                 } else {
-                    startFragment(this, UsbSettings.class.getCanonicalName(), -1, null);
+                    startFragment(this, UsbSettings.class.getCanonicalName(),
+                            R.string.storage_title_usb, -1, null);
                 }
                 return true;
         }
diff --git a/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java b/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java
index bc8d920..54a5698 100644
--- a/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java
+++ b/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java
@@ -235,7 +235,7 @@
                                 targetFragment = UserDictionaryList.class;
                             }
                             startFragment(InputMethodAndLanguageSettings.this,
-                                    targetFragment.getCanonicalName(), -1, extras);
+                                    targetFragment.getCanonicalName(), -1, -1, extras);
                             return true;
                         }
                     });
diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java
index cc63f77..a7f291d 100644
--- a/src/com/android/settings/wifi/WifiSettings.java
+++ b/src/com/android/settings/wifi/WifiSettings.java
@@ -25,7 +25,6 @@
 import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settings.search.Indexable;
 import com.android.settings.search.SearchIndexableRaw;
-import com.android.settings.widget.SwitchBar;
 import com.android.settings.wifi.p2p.WifiP2pSettings;
 
 import android.app.Activity;
@@ -366,7 +365,8 @@
                             R.string.wifi_p2p_settings_title, null,
                             this, 0);
                 } else {
-                    startFragment(this, WifiP2pSettings.class.getCanonicalName(), -1, null);
+                    startFragment(this, WifiP2pSettings.class.getCanonicalName(),
+                            R.string.wifi_p2p_settings_title, -1, null);
                 }
                 return true;
             case MENU_ID_WPS_PIN:
@@ -390,7 +390,8 @@
                             R.string.wifi_advanced_titlebar, null,
                             this, 0);
                 } else {
-                    startFragment(this, AdvancedWifiSettings.class.getCanonicalName(), -1, null);
+                    startFragment(this, AdvancedWifiSettings.class.getCanonicalName(),
+                            R.string.wifi_advanced_titlebar, -1, null);
                 }
                 return true;
         }
