Bug 4879032: NPE fix when restarting Settings.

Change-Id: I65b9fb220bf51357c02555902cdb263df7db1016
diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java
index cbdd37b..f07d965 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -81,7 +81,7 @@
         super.onCreate(savedInstanceState);
         mInLocalHeaderSwitch = false;
 
-        if (!onIsHidingHeaders() && onIsMultiPane()) {
+        if (isMultiPane()) {
             highlightHeader();
             // Force the title so that it doesn't get overridden by a direct launch of
             // a specific settings screen.
@@ -193,7 +193,7 @@
 
         // If it is not launched from history, then reset to top-level
         if ((intent.getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) == 0
-                && mFirstHeader != null) {
+                && mFirstHeader != null && isMultiPane()) {
             switchToHeaderLocal(mFirstHeader);
         }
     }
@@ -211,7 +211,7 @@
     public Intent getIntent() {
         Intent superIntent = super.getIntent();
         String startingFragment = getStartingFragmentClass(superIntent);
-        if (startingFragment != null && !onIsMultiPane()) {
+        if (startingFragment != null && !isMultiPane()) {
             Intent modIntent = new Intent(superIntent);
             modIntent.putExtra(EXTRA_SHOW_FRAGMENT, startingFragment);
             Bundle args = superIntent.getExtras();
@@ -263,17 +263,7 @@
             return header;
         }
 
-        // Find first non-category header
-        int position = 0;
-        while (position < mHeaders.size()) {
-            Header header = mHeaders.get(position);
-            if (HeaderAdapter.getHeaderType(header) != HeaderAdapter.HEADER_TYPE_CATEGORY)
-                return header;
-            position++;
-        }
-
-        Log.e(LOG_TAG, "Unable to find a non-category header");
-        return null;
+        return mFirstHeader;
     }
 
     @Override
@@ -326,7 +316,10 @@
             // Increment if the current one wasn't removed by the Utils code.
             if (target.get(i) == header) {
                 // Hold on to the first header, when we need to reset to the top-level
-                if (i == 0) mFirstHeader = header;
+                if (mFirstHeader == null &&
+                        HeaderAdapter.getHeaderType(header) != HeaderAdapter.HEADER_TYPE_CATEGORY) {
+                    mFirstHeader = header;
+                }
                 mHeaderIndexMap.put(id, i);
                 i++;
             }
@@ -428,7 +421,7 @@
             super(context, 0, objects);
             mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
             
-            // These Switches are provided as placeholder until the adapter replaces these with actual
+            // Temp Switches provided as placeholder until the adapter replaces these with actual
             // Switches inflated from their layouts. Must be done before adapter is set in super
             mWifiEnabler = new WifiEnabler(context, new Switch(context));
             mBluetoothEnabler = new BluetoothEnabler(context, new Switch(context));
@@ -445,23 +438,31 @@
                 holder = new HeaderViewHolder();
                 switch (headerType) {
                     case HEADER_TYPE_CATEGORY:
-                        view = new TextView(getContext(), null, android.R.attr.listSeparatorTextViewStyle);
+                        view = new TextView(getContext(), null,
+                                android.R.attr.listSeparatorTextViewStyle);
                         holder.title = (TextView) view;
                         break;
 
                     case HEADER_TYPE_SWITCH:
-                        view = mInflater.inflate(R.layout.preference_header_switch_item, parent, false);
+                        view = mInflater.inflate(R.layout.preference_header_switch_item, parent,
+                                false);
                         holder.icon = (ImageView) view.findViewById(R.id.icon);
-                        holder.title = (TextView) view.findViewById(com.android.internal.R.id.title);
-                        holder.summary = (TextView) view.findViewById(com.android.internal.R.id.summary);
+                        holder.title = (TextView)
+                                view.findViewById(com.android.internal.R.id.title);
+                        holder.summary = (TextView)
+                                view.findViewById(com.android.internal.R.id.summary);
                         holder.switch_ = (Switch) view.findViewById(R.id.switchWidget);
                         break;
 
                     case HEADER_TYPE_NORMAL:
-                        view = mInflater.inflate(com.android.internal.R.layout.preference_header_item, parent, false);
+                        view = mInflater.inflate(
+                                com.android.internal.R.layout.preference_header_item, parent,
+                                false);
                         holder.icon = (ImageView) view.findViewById(com.android.internal.R.id.icon);
-                        holder.title = (TextView) view.findViewById(com.android.internal.R.id.title);
-                        holder.summary = (TextView) view.findViewById(com.android.internal.R.id.summary);
+                        holder.title = (TextView)
+                                view.findViewById(com.android.internal.R.id.title);
+                        holder.summary = (TextView)
+                                view.findViewById(com.android.internal.R.id.summary);
                         break;
                 }
                 view.setTag(holder);