Only show settings drawer on top level items
Bug: 26080590
Change-Id: Id8d387492e2e1e09fc87f4123bf7c399a2c1380e
diff --git a/packages/SettingsLib/src/com/android/settingslib/drawer/SettingsDrawerActivity.java b/packages/SettingsLib/src/com/android/settingslib/drawer/SettingsDrawerActivity.java
index 3fc0c22..56c4edb 100644
--- a/packages/SettingsLib/src/com/android/settingslib/drawer/SettingsDrawerActivity.java
+++ b/packages/SettingsLib/src/com/android/settingslib/drawer/SettingsDrawerActivity.java
@@ -48,6 +48,8 @@
protected static final boolean DEBUG_TIMING = false;
private static final String TAG = "SettingsDrawerActivity";
+ static final String EXTRA_SHOW_MENU = "show_drawer_menu";
+
private static List<DashboardCategory> sDashboardCategories;
private static HashMap<Pair<String, String>, Tile> sTileCache;
@@ -56,6 +58,7 @@
private SettingsDrawerAdapter mDrawerAdapter;
private DrawerLayout mDrawerLayout;
+ private boolean mShowingMenu;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -94,7 +97,7 @@
@Override
public boolean onOptionsItemSelected(MenuItem item) {
- if (mDrawerLayout != null && item.getItemId() == android.R.id.home
+ if (mShowingMenu && mDrawerLayout != null && item.getItemId() == android.R.id.home
&& mDrawerAdapter.getCount() != 0) {
openDrawer();
return true;
@@ -116,6 +119,9 @@
new CategoriesUpdater().execute();
}
+ if (getIntent() != null && getIntent().getBooleanExtra(EXTRA_SHOW_MENU, false)) {
+ showMenuIcon();
+ }
}
@Override
@@ -171,13 +177,17 @@
mDrawerAdapter.updateCategories();
if (mDrawerAdapter.getCount() != 0) {
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
- getActionBar().setHomeAsUpIndicator(R.drawable.ic_menu);
- getActionBar().setDisplayHomeAsUpEnabled(true);
} else {
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
}
}
+ public void showMenuIcon() {
+ mShowingMenu = true;
+ getActionBar().setHomeAsUpIndicator(R.drawable.ic_menu);
+ getActionBar().setDisplayHomeAsUpEnabled(true);
+ }
+
public List<DashboardCategory> getDashboardCategories() {
if (sDashboardCategories == null) {
sTileCache = new HashMap<>();
@@ -204,8 +214,12 @@
ProfileSelectDialog.show(getFragmentManager(), tile);
return false;
} else if (numUserHandles == 1) {
+ // Show menu on top level items.
+ tile.intent.putExtra(EXTRA_SHOW_MENU, true);
startActivityAsUser(tile.intent, tile.userHandle.get(0));
} else {
+ // Show menu on top level items.
+ tile.intent.putExtra(EXTRA_SHOW_MENU, true);
startActivity(tile.intent);
}
return true;