From 3d384f4ca29d031f7ac3c7f0cc0a2f448a277097 Mon Sep 17 00:00:00 2001 From: Amith Yamasani Date: Fri, 11 May 2012 15:22:04 -0700 Subject: [PATCH] Fix up-navigation for different levels of Settings screens. No up affordance for 2-pane screens since there's already a fragment breadcrumb for navigating up. Bug: 6452961 Change-Id: Iad9a5c2d0b68cc8f2aec7d5ed8e2ab14d023d48c --- src/com/android/settings/Settings.java | 12 +++++++++--- src/com/android/settings/SubSettings.java | 6 ++++++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java index 320e527030e..b36364d6f8c 100644 --- a/src/com/android/settings/Settings.java +++ b/src/com/android/settings/Settings.java @@ -143,9 +143,11 @@ public class Settings extends PreferenceActivity implements ButtonBarHandler { }); } - // TODO Add support for android.R.id.home in all Setting's onOptionsItemSelected - // getActionBar().setDisplayOptions(ActionBar.DISPLAY_HOME_AS_UP, - // ActionBar.DISPLAY_HOME_AS_UP); + // Override up navigation for multi-pane, since we handle it in the fragment breadcrumbs + if (onIsMultiPane()) { + getActionBar().setDisplayHomeAsUpEnabled(false); + getActionBar().setHomeButtonEnabled(false); + } } @Override @@ -602,6 +604,10 @@ public class Settings extends PreferenceActivity implements ButtonBarHandler { return true; } + public boolean shouldUpRecreateTask(Intent targetIntent) { + return super.shouldUpRecreateTask(new Intent(this, Settings.class)); + } + @Override public void setListAdapter(ListAdapter adapter) { if (mHeaders == null) { diff --git a/src/com/android/settings/SubSettings.java b/src/com/android/settings/SubSettings.java index 9cd3c31e18b..eb275ad6e83 100644 --- a/src/com/android/settings/SubSettings.java +++ b/src/com/android/settings/SubSettings.java @@ -21,4 +21,10 @@ package com.android.settings; * since for our app it is a special singleTask class. */ public class SubSettings extends Settings { + + @Override + public boolean onNavigateUp() { + finish(); + return true; + } }