Fix bug #13394626 Settings app crashes on changing orientation to landscape mode

- fix NPE on mInitialHeader.id

Change-Id: Ic1017f5a8a20755bf7f36b1f3406d45dcc80ae8f
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index ec4ebc7..8582bc6 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -133,7 +133,6 @@
     // Constants for state save/restore
     private static final String SAVE_KEY_HEADERS_TAG = ":settings:headers";
     private static final String SAVE_KEY_CURRENT_HEADER_TAG = ":settings:cur_header";
-    private static final String SAVE_KEY_TITLES_TAG = ":settings:titles";
 
     /**
      * When starting this activity, the invoking Intent can contain this extra
@@ -587,7 +586,6 @@
             // We are restarting from a previous saved state; used that to
             // initialize, instead of starting fresh.
             mInitialTitle = getTitle();
-            setTitleFromBackStack();
 
             ArrayList<Header> headers =
                     savedInstanceState.getParcelableArrayList(SAVE_KEY_HEADERS_TAG);
@@ -599,6 +597,7 @@
                     setSelectedHeader(mHeaders.get(curHeader));
                     mInitialHeader = mCurrentHeader;
                 }
+                setTitleFromBackStack();
             }
         } else {
             String initialFragment = getIntent().getStringExtra(EXTRA_SHOW_FRAGMENT);
@@ -713,18 +712,23 @@
 
     @Override
     public void onBackStackChanged() {
-        setTitleFromBackStack();
+        if (setTitleFromBackStack() == 0) {
+            setSelectedHeaderById(mInitialHeader.id);
+        }
     }
 
-    private void setTitleFromBackStack() {
+    private int setTitleFromBackStack() {
         final int count = getFragmentManager().getBackStackEntryCount();
+
         if (count == 0) {
             setTitle(mInitialTitle);
-            setSelectedHeaderById(mInitialHeader.id);
-            return;
+            return 0;
         }
+
         FragmentManager.BackStackEntry bse = getFragmentManager().getBackStackEntryAt(count - 1);
         setTitleFromBackStackEntry(bse);
+
+        return count;
     }
 
     private void setTitleFromBackStackEntry(FragmentManager.BackStackEntry bse) {