Fix bug #15001610 Java crash in settings is observed while adding Google account on wiped device
- make WifiPickerActivity a SettingsActivity (as it was long overdue)
- move code from the overide of PreferenceActivity.startWithFragment() to
SettingsActivity.startPreferencePanel(...)
Change-Id: Ibc42056fdc84e01004e15c3779073e5451fd02a1
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index 36e1904..ab5ee91 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -518,7 +518,7 @@
* entire activity.
*
* @param context The context.
- * @param fragmentName The name of the fragment to display.
+ * @param fragmentClass The class name of the fragment to display.
* @param args Optional arguments to supply to the fragment.
* @param resultTo Option fragment that should receive the result of
* the activity launch.
@@ -526,9 +526,9 @@
* code in which to report the result.
* @param title String to display for the title of this set of preferences.
*/
- public static void startWithFragment(Context context, String fragmentName, Bundle args,
+ public static void startWithFragment(Context context, String fragmentClass, Bundle args,
Fragment resultTo, int resultRequestCode, CharSequence title) {
- Intent intent = onBuildStartFragmentIntent(context, fragmentName, args, title);
+ Intent intent = onBuildStartFragmentIntent(context, fragmentClass, args, title);
if (resultTo == null) {
context.startActivity(intent);
} else {
@@ -542,17 +542,17 @@
* appropriate arguments to display the fragment.
*
* @param context The Context.
- * @param fragmentName The name of the fragment to display.
+ * @param fragmentClass The class name of the fragment to display.
* @param args Optional arguments to supply to the fragment.
* @param title Optional title to show for this item.
* @return Returns an Intent that can be launched to display the given
* fragment.
*/
- public static Intent onBuildStartFragmentIntent(Context context, String fragmentName,
+ public static Intent onBuildStartFragmentIntent(Context context, String fragmentClass,
Bundle args, CharSequence title) {
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setClass(context, SubSettings.class);
- intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT, fragmentName);
+ intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT, fragmentClass);
intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS, args);
intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE, title);
return intent;
diff --git a/src/com/android/settings/wifi/WifiPickerActivity.java b/src/com/android/settings/wifi/WifiPickerActivity.java
index deef8fa..e7ae462 100644
--- a/src/com/android/settings/wifi/WifiPickerActivity.java
+++ b/src/com/android/settings/wifi/WifiPickerActivity.java
@@ -16,6 +16,7 @@
package com.android.settings.wifi;
import com.android.settings.ButtonBarHandler;
+import com.android.settings.SettingsActivity;
import com.android.settings.wifi.p2p.WifiP2pSettings;
import android.app.Fragment;
@@ -24,7 +25,7 @@
import android.preference.PreferenceActivity;
import android.widget.Button;
-public class WifiPickerActivity extends PreferenceActivity implements ButtonBarHandler {
+public class WifiPickerActivity extends SettingsActivity implements ButtonBarHandler {
// Same as what are in PreferenceActivity as private.
private static final String EXTRA_PREFS_SHOW_BUTTON_BAR = "extra_prefs_show_button_bar";
@@ -39,7 +40,6 @@
if (!modIntent.hasExtra(EXTRA_SHOW_FRAGMENT)) {
modIntent.putExtra(EXTRA_SHOW_FRAGMENT, WifiSettings.class.getName());
}
- modIntent.putExtra(EXTRA_NO_HEADERS, true);
return modIntent;
}
@@ -52,18 +52,14 @@
}
/**
- * Almost dead copy of
- * {@link PreferenceActivity#startWithFragment(String, Bundle, Fragment, int)}, except this has
- * additional codes for button bar handling.
+ * Add additional codes for button bar handling.
*/
- @Override
- public void startWithFragment(String fragmentName, Bundle args,
- Fragment resultTo, int resultRequestCode) {
+ public void startPreferencePanel(String fragmentClass, Bundle args, int titleRes,
+ CharSequence titleText, 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, fragmentClass);
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)) {
@@ -87,11 +83,8 @@
orgIntent.getBooleanExtra(EXTRA_WIFI_SHOW_MENUS, true));
}
- if (resultTo == null) {
- startActivity(intent);
- } else {
- resultTo.startActivityForResult(intent, resultRequestCode);
- }
+ super.startPreferencePanel(fragmentClass, args, titleRes, titleText, resultTo,
+ resultRequestCode);
}
@Override