Show/hide back button for 2nd page
By design, we want to show/hide back button for 2nd
layer page when it's in two pane mode.
Test: Manual test
Bug: 219000314
Change-Id: I14d8d7ee08280d5ce80c0b59e1e91d077f0b6d09
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index d3d3604..d9dc590 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -143,6 +143,8 @@
public static final String EXTRA_SHOW_FRAGMENT_AS_SUBSETTING =
":settings:show_fragment_as_subsetting";
+ public static final String EXTRA_IS_SECONDARY_LAYER_PAGE =
+ ":settings:is_secondary_layer_page";
/**
* Additional extra of Settings#ACTION_SETTINGS_LARGE_SCREEN_DEEP_LINK.
@@ -301,12 +303,12 @@
launchSettingFragment(initialFragmentName, intent);
}
- final boolean isInSetupWizard = WizardManagerHelper.isAnySetupWizard(getIntent());
+ final boolean isActionBarButtonEnabled = isActionBarButtonEnabled(intent);
final ActionBar actionBar = getActionBar();
if (actionBar != null) {
- actionBar.setDisplayHomeAsUpEnabled(!isInSetupWizard);
- actionBar.setHomeButtonEnabled(!isInSetupWizard);
+ actionBar.setDisplayHomeAsUpEnabled(isActionBarButtonEnabled);
+ actionBar.setHomeButtonEnabled(isActionBarButtonEnabled);
actionBar.setDisplayShowTitleEnabled(true);
}
mMainSwitch = findViewById(R.id.switch_bar);
@@ -366,6 +368,18 @@
}
}
+ private boolean isActionBarButtonEnabled(Intent intent) {
+ if (WizardManagerHelper.isAnySetupWizard(intent)) {
+ return false;
+ }
+ final boolean isSecondaryLayerPage =
+ intent.getBooleanExtra(EXTRA_IS_SECONDARY_LAYER_PAGE, false);
+
+ // TODO: move Settings's ActivityEmbeddingUtils to SettingsLib.
+ return !com.android.settingslib.activityembedding.ActivityEmbeddingUtils
+ .shouldHideBackButton(this, isSecondaryLayerPage);
+ }
+
private boolean isSubSettings(Intent intent) {
return this instanceof SubSettings ||
intent.getBooleanExtra(EXTRA_SHOW_FRAGMENT_AS_SUBSETTING, false);