Fix Drawer selection when using BACK

- select the initial Header if needed

Change-Id: I2d884fbab9a49cc3385dbe1b311f9e0853d027d3
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index 28ff883..ec4ebc7 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -615,7 +615,7 @@
                 mInitialTitle = (initialTitleResId > 0) ? getText(initialTitleResId) : getTitle();
                 setTitle(mInitialTitle);
                 switchToHeaderInner(initialFragment, initialArguments, true, false, mInitialTitle);
-                setSelectedHeaderByTopLevelId(mTopLevelHeaderId);
+                setSelectedHeaderById(mTopLevelHeaderId);
                 mInitialHeader = mCurrentHeader;
             } else {
                 // If there are headers, then at this point we need to show
@@ -720,6 +720,7 @@
         final int count = getFragmentManager().getBackStackEntryCount();
         if (count == 0) {
             setTitle(mInitialTitle);
+            setSelectedHeaderById(mInitialHeader.id);
             return;
         }
         FragmentManager.BackStackEntry bse = getFragmentManager().getBackStackEntryAt(count - 1);
@@ -819,17 +820,20 @@
         return title;
     }
 
-    private void setSelectedHeaderByTopLevelId(int topLevelId) {
+    private void setSelectedHeaderById(long headerId) {
         final int count = mHeaders.size();
         for (int n = 0; n < count; n++) {
             Header h = mHeaders.get(n);
-            if (h.id == topLevelId) {
+            if (h.id == headerId) {
                 setSelectedHeader(h);
                 return;
             }
         }
     }
 
+    /**
+     * As the Headers can be rebuilt, their references can change, so use this method with caution!
+     */
     private void setSelectedHeader(Header header) {
         if (header == null) {
             mCurrentHeader = null;
@@ -849,6 +853,18 @@
         }
     }
 
+    private void highlightHeader(int id) {
+        if (id != 0) {
+            Integer index = mHeaderIndexMap.get(id);
+            if (index != null) {
+                mDrawer.setItemChecked(index, true);
+                if (mDrawer.getVisibility() == View.VISIBLE) {
+                    mDrawer.smoothScrollToPosition(index);
+                }
+            }
+        }
+    }
+
     /**
      * When in two-pane mode, switch to the fragment pane to show the given
      * preference fragment.
@@ -950,18 +966,6 @@
         return getIntent().getBooleanExtra(EXTRA_NO_HEADERS, false);
     }
 
-    private void highlightHeader(int id) {
-        if (id != 0) {
-            Integer index = mHeaderIndexMap.get(id);
-            if (index != null && mDrawer != null) {
-                mDrawer.setItemChecked(index, true);
-                if (mDrawer.getVisibility() == View.VISIBLE) {
-                    mDrawer.smoothScrollToPosition(index);
-                }
-            }
-        }
-    }
-
     @Override
     public Intent getIntent() {
         Intent superIntent = super.getIntent();