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:
@@ -382,6 +382,8 @@ public class SettingsActivity extends Activity
|
|||||||
@Override
|
@Override
|
||||||
public void onDrawerClosed(View drawerView) {
|
public void onDrawerClosed(View drawerView) {
|
||||||
mDrawerToggle.onDrawerClosed(drawerView);
|
mDrawerToggle.onDrawerClosed(drawerView);
|
||||||
|
// Cannot process clicks when the App is finishing
|
||||||
|
if (isFinishing()) return;
|
||||||
onHeaderClick(mCurrentHeader);
|
onHeaderClick(mCurrentHeader);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -512,7 +514,6 @@ public class SettingsActivity extends Activity
|
|||||||
mActionBar.setHomeButtonEnabled(true);
|
mActionBar.setHomeButtonEnabled(true);
|
||||||
|
|
||||||
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
|
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
|
||||||
mDrawerLayout.setDrawerListener(new DrawerListener());
|
|
||||||
|
|
||||||
mDrawer = (ListView) findViewById(R.id.headers_drawer);
|
mDrawer = (ListView) findViewById(R.id.headers_drawer);
|
||||||
mDrawer.setAdapter(mHeaderAdapter);
|
mDrawer.setAdapter(mHeaderAdapter);
|
||||||
@@ -705,12 +706,16 @@ public class SettingsActivity extends Activity
|
|||||||
invalidateHeaders();
|
invalidateHeaders();
|
||||||
|
|
||||||
registerReceiver(mBatteryInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
|
registerReceiver(mBatteryInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
|
||||||
|
|
||||||
|
mDrawerLayout.setDrawerListener(new DrawerListener());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPause() {
|
public void onPause() {
|
||||||
super.onPause();
|
super.onPause();
|
||||||
|
|
||||||
|
mDrawerLayout.setDrawerListener(null);
|
||||||
|
|
||||||
unregisterReceiver(mBatteryInfoReceiver);
|
unregisterReceiver(mBatteryInfoReceiver);
|
||||||
|
|
||||||
mHeaderAdapter.pause();
|
mHeaderAdapter.pause();
|
||||||
|
Reference in New Issue
Block a user