Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 18d271c7 authored by Fabrice Di Meglio's avatar Fabrice Di Meglio
Browse files

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
parent 08190bbb
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -518,7 +518,7 @@ public class Utils {
     * 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 @@ public class Utils {
     * 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 @@ public class Utils {
     * 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;
+8 −15
Original line number Diff line number Diff line
@@ -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.os.Bundle;
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 @@ public class WifiPickerActivity extends PreferenceActivity implements ButtonBarH
        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 @@ public class WifiPickerActivity extends PreferenceActivity implements ButtonBarH
    }

    /**
     * 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 @@ public class WifiPickerActivity extends PreferenceActivity implements ButtonBarH
                    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