OSDN Git Service

Fix up-navigation for different levels of Settings screens.
authorAmith Yamasani <yamasani@google.com>
Fri, 11 May 2012 22:22:04 +0000 (15:22 -0700)
committerAmith Yamasani <yamasani@google.com>
Mon, 14 May 2012 18:57:10 +0000 (11:57 -0700)
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
src/com/android/settings/SubSettings.java

index 320e527..b36364d 100644 (file)
@@ -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) {
index 9cd3c31..eb275ad 100644 (file)
@@ -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;
+    }
 }