Fix ClassCastException when users starts A11y vision settings from out of setup flow

Root cause: Launch A11y vision settings from out of setup flow would not apply setup wizard theme (SettingsPreferenceTheme_SetupWizard). This throws ClassCastException when converting the layout to support auto-switching two-panel pattern.
Solution: Only converting the layout if launched in setup flow.

Bug: 269267419
Test: Manual testing by `adb shell am start -n com.android.settings/com.android.settings.accessibility.AccessibilitySettingsForSetupWizardActivity` for out of setup flow cases & 'adb shell am start -a android.intent.action.MAIN -n com.google.android.setupwizard/.SetupWizardTestActivity' for setup flow.

Change-Id: I16871b2fa800dd1de539b7b4b96c32ce7b2cd5c9
This commit is contained in:
menghanli
2023-03-01 16:20:58 +08:00
parent 408a4045f1
commit fdc9a1b896
6 changed files with 110 additions and 81 deletions

View File

@@ -20,7 +20,6 @@ import android.os.Bundle;
import android.view.Menu;
import android.view.accessibility.AccessibilityEvent;
import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;
import androidx.preference.PreferenceFragmentCompat;
@@ -33,16 +32,13 @@ import com.android.settings.support.actionbar.HelpResourceProvider;
import com.android.settingslib.core.instrumentation.Instrumentable;
import com.android.settingslib.transition.SettingsTransitionHelper;
import com.google.android.setupcompat.util.WizardManagerHelper;
import com.google.android.setupdesign.util.ThemeHelper;
public class AccessibilitySettingsForSetupWizardActivity extends SettingsActivity {
private static final String SAVE_KEY_TITLE = "activity_title";
@VisibleForTesting
static final String CLASS_NAME_FONT_SIZE_SETTINGS_FOR_SUW =
"com.android.settings.FontSizeSettingsForSetupWizardActivity";
@Override
protected void onSaveInstanceState(Bundle savedState) {
savedState.putCharSequence(SAVE_KEY_TITLE, getTitle());
@@ -101,8 +97,11 @@ public class AccessibilitySettingsForSetupWizardActivity extends SettingsActivit
}
private void applyTheme() {
setTheme(SetupWizardUtils.getTheme(this, getIntent()));
setTheme(R.style.SettingsPreferenceTheme_SetupWizard);
ThemeHelper.trySetDynamicColor(this);
final boolean isAnySetupWizard = WizardManagerHelper.isAnySetupWizard(getIntent());
if (isAnySetupWizard) {
setTheme(SetupWizardUtils.getTheme(this, getIntent()));
setTheme(R.style.SettingsPreferenceTheme_SetupWizard);
ThemeHelper.trySetDynamicColor(this);
}
}
}