Fix bug #12957228 Java crash in com.android.settings: java.lang.IllegalStateException:
...Can not perform this action after onSaveInstanceState

- prevent a click on the Drawer's Headers when the App is paused / finished
- register / unregister the DrawerListener when needed

Change-Id: Ia270ef27b23c66d55565bbb73d4f6a6531b742d2
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index af0d8bb..c8e4d3f 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -382,6 +382,8 @@
         @Override
         public void onDrawerClosed(View drawerView) {
             mDrawerToggle.onDrawerClosed(drawerView);
+            // Cannot process clicks when the App is finishing
+            if (isFinishing()) return;
             onHeaderClick(mCurrentHeader);
         }
 
@@ -512,7 +514,6 @@
             mActionBar.setHomeButtonEnabled(true);
 
             mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
-            mDrawerLayout.setDrawerListener(new DrawerListener());
 
             mDrawer = (ListView) findViewById(R.id.headers_drawer);
             mDrawer.setAdapter(mHeaderAdapter);
@@ -705,12 +706,16 @@
         invalidateHeaders();
 
         registerReceiver(mBatteryInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
+
+        mDrawerLayout.setDrawerListener(new DrawerListener());
     }
 
     @Override
     public void onPause() {
         super.onPause();
 
+        mDrawerLayout.setDrawerListener(null);
+
         unregisterReceiver(mBatteryInfoReceiver);
 
         mHeaderAdapter.pause();