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();