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
This commit is contained in:
Fabrice Di Meglio
2014-02-10 17:11:10 -08:00
parent ef2b359b48
commit 7ce7c40dac

View File

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