Fix VPN settings flow.

Bug: 3053019
This commit is contained in:
Amith Yamasani
2010-11-12 08:51:01 -08:00
parent 59a48604b5
commit 928e78acea
5 changed files with 59 additions and 70 deletions

View File

@@ -63,50 +63,12 @@ public class SettingsPreferenceFragment extends PreferenceFragment
private Button mNextButton;
@Override
public void onResume() {
super.onResume();
final Fragment f = getTargetFragment();
final int requestCode = getTargetRequestCode();
// TargetFragment becomes invalid when this object is resumed. Notify it to
// FragmentManager. Without this code, FragmentManager wrongly take the TargetFragment
// as live, and throws IllegalStateException.
setTargetFragment(null, -1);
if (f != null && (f instanceof SettingsPreferenceFragment)) {
final SettingsPreferenceFragment spf = (SettingsPreferenceFragment)f;
final int resultCode = spf.getResultCode();
final Intent resultData = spf.getResultData();
onActivityResult(requestCode, resultCode, resultData);
}
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
setupButtonBar();
}
public final void setResult(int resultCode) {
mResultCode = resultCode;
mResultData = null;
}
public final void setResult(int resultCode, Intent data) {
mResultCode = resultCode;
mResultData = data;
}
public final int getResultCode() {
return mResultCode;
}
public final Intent getResultData() {
return mResultData;
}
/*
* The name is intentionally made different from Activity#finish(), so that
* users won't misunderstand its meaning.
@@ -196,9 +158,8 @@ public class SettingsPreferenceFragment extends PreferenceFragment
Fragment caller, String fragmentClass, int requestCode, Bundle extras) {
if (getActivity() instanceof PreferenceActivity) {
PreferenceActivity preferenceActivity = (PreferenceActivity)getActivity();
Fragment f = Fragment.instantiate(getActivity(), fragmentClass, extras);
caller.setTargetFragment(f, requestCode);
preferenceActivity.switchToHeader(fragmentClass, extras);
preferenceActivity.startPreferencePanel(fragmentClass, extras, 0, null, caller,
requestCode);
return true;
} else {
Log.w(TAG, "Parent isn't PreferenceActivity, thus there's no way to launch the "