diff --git a/src/com/android/settings/wifi/WifiPickerActivity.java b/src/com/android/settings/wifi/WifiPickerActivity.java index 7b972fcea64..6a2f8655be4 100644 --- a/src/com/android/settings/wifi/WifiPickerActivity.java +++ b/src/com/android/settings/wifi/WifiPickerActivity.java @@ -17,19 +17,64 @@ package com.android.settings.wifi; import com.android.settings.ButtonBarHandler; +import android.app.Fragment; import android.content.Intent; +import android.os.Bundle; import android.preference.PreferenceActivity; import android.widget.Button; public class WifiPickerActivity extends PreferenceActivity implements ButtonBarHandler { + + // Same as what are in PreferenceActivity as private. + private static final String EXTRA_PREFS_SHOW_BUTTON_BAR = "extra_prefs_show_button_bar"; + private static final String EXTRA_PREFS_SET_NEXT_TEXT = "extra_prefs_set_next_text"; + private static final String EXTRA_PREFS_SET_BACK_TEXT = "extra_prefs_set_back_text"; + @Override public Intent getIntent() { Intent modIntent = new Intent(super.getIntent()); - modIntent.putExtra(EXTRA_SHOW_FRAGMENT, WifiSettings.class.getName()); + if (!modIntent.hasExtra(EXTRA_SHOW_FRAGMENT)) { + modIntent.putExtra(EXTRA_SHOW_FRAGMENT, WifiSettings.class.getName()); + } modIntent.putExtra(EXTRA_NO_HEADERS, true); return modIntent; } + /** + * Almost dead copy of + * {@link PreferenceActivity#startWithFragment(String, Bundle, Fragment, int)}, except + * this has additional codes for button bar handling. + */ + @Override + public void startWithFragment(String fragmentName, Bundle args, + Fragment resultTo, int resultRequestCode) { + Intent intent = new Intent(Intent.ACTION_MAIN); + intent.setClass(this, getClass()); + intent.putExtra(EXTRA_SHOW_FRAGMENT, fragmentName); + intent.putExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS, args); + intent.putExtra(EXTRA_NO_HEADERS, true); + + final Intent orgIntent = getIntent(); + if (orgIntent.hasExtra(EXTRA_PREFS_SHOW_BUTTON_BAR)) { + intent.putExtra(EXTRA_PREFS_SHOW_BUTTON_BAR, + orgIntent.getBooleanExtra(EXTRA_PREFS_SHOW_BUTTON_BAR, false)); + } + if (orgIntent.hasExtra(EXTRA_PREFS_SET_NEXT_TEXT)) { + intent.putExtra(EXTRA_PREFS_SET_NEXT_TEXT, + orgIntent.getStringExtra(EXTRA_PREFS_SET_NEXT_TEXT)); + } + if (orgIntent.hasExtra(EXTRA_PREFS_SET_BACK_TEXT)) { + intent.putExtra(EXTRA_PREFS_SET_BACK_TEXT, + orgIntent.getStringExtra(EXTRA_PREFS_SET_BACK_TEXT)); + } + + if (resultTo == null) { + startActivity(intent); + } else { + resultTo.startActivityForResult(intent, resultRequestCode); + } + } + @Override public boolean hasNextButton() { // PreferenceActivity#hasNextButton() is protected, so we need to expose it here.