Fragmentize VpnSettings and relevant Activities.

Add startFragment() to SettingsFragmentPreference.

Change-Id: Ifab93b2e68892d5f6da559f337c94d62629780c8
diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java
index 50aa1df..cc3f7ea 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -41,7 +41,8 @@
  */
 public class Settings extends Activity
         implements PreferenceFragment.OnPreferenceStartFragmentCallback,
-        SettingsPreferenceFragment.OnStateListener {
+        SettingsPreferenceFragment.OnStateListener,
+        SettingsPreferenceFragment.FragmentStarter {
 
     private static final boolean DBG = false;
 
@@ -143,7 +144,9 @@
         if (DBG) Log.d(TAG, "showFragment");
        Fragment f = Fragment.instantiate(this, fragmentClass, extras);
         if (f instanceof SettingsPreferenceFragment) {
-            ((SettingsPreferenceFragment) f).setOnStateListener(this);
+            SettingsPreferenceFragment spf = (SettingsPreferenceFragment) f;
+            spf.setOnStateListener(this);
+            spf.setFragmentStarter(this);
         }
         mBreadCrumbs.clear();
         getFragmentManager().popBackStack(BACK_STACK_PREFS, POP_BACK_STACK_INCLUSIVE);
@@ -176,9 +179,17 @@
 
     public boolean onPreferenceStartFragment(PreferenceFragment caller, Preference pref) {
         if (DBG) Log.d(TAG, "onPreferenceStartFragment");
-        Fragment f = Fragment.instantiate(this, pref.getFragment(), pref.getExtras());
+        return startFragment(caller, pref.getFragment(), -1, pref.getExtras());
+    }
+
+    public boolean startFragment(
+            Fragment caller, String fragmentClass, int requestCode, Bundle extras) {
+        Fragment f = Fragment.instantiate(this, fragmentClass, extras);
+        caller.setTargetFragment(f, requestCode);
         if (f instanceof SettingsPreferenceFragment) {
-            ((SettingsPreferenceFragment) f).setOnStateListener(this);
+            SettingsPreferenceFragment spf = (SettingsPreferenceFragment) f;
+            spf.setOnStateListener(this);
+            spf.setFragmentStarter(this);
         }
         getFragmentManager().openTransaction().replace(R.id.prefs, f)
                 .addToBackStack(BACK_STACK_PREFS).commit();