From 7ce7c40dac0fa8d27b28b82084d3c3fe7f2f524f Mon Sep 17 00:00:00 2001 From: Fabrice Di Meglio Date: Mon, 10 Feb 2014 17:11:10 -0800 Subject: [PATCH] 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 --- src/com/android/settings/SettingsActivity.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java index af0d8bb157b..c8e4d3f9fa9 100644 --- a/src/com/android/settings/SettingsActivity.java +++ b/src/com/android/settings/SettingsActivity.java @@ -382,6 +382,8 @@ public class SettingsActivity extends Activity @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 @@ public class SettingsActivity extends Activity 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 @@ public class SettingsActivity extends Activity 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();