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();