diff options
author | Romain Guy <romainguy@android.com> | 2009-06-19 13:18:12 -0700 |
---|---|---|
committer | Romain Guy <romainguy@android.com> | 2009-06-19 13:18:12 -0700 |
commit | e35c23514592efe07d54fdbed7e7ec0b717e8bbe (patch) | |
tree | 309749084cea84acbe4c7c3b3ba488e0b40378af /core | |
parent | 649f99e8347984c1e031dae302830f4c9ebd3df4 (diff) | |
download | frameworks_base-e35c23514592efe07d54fdbed7e7ec0b717e8bbe.zip frameworks_base-e35c23514592efe07d54fdbed7e7ec0b717e8bbe.tar.gz frameworks_base-e35c23514592efe07d54fdbed7e7ec0b717e8bbe.tar.bz2 |
Fixes #1928566. Prevents runtime restart upon configuration change.
Managed dialogs could cause dispatchOnCreate() to be called twice, which
would cause an exception.
Diffstat (limited to 'core')
-rw-r--r-- | core/java/android/app/Activity.java | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java index 51a8ed2..ca9632a 100644 --- a/core/java/android/app/Activity.java +++ b/core/java/android/app/Activity.java @@ -864,7 +864,9 @@ public class Activity extends ContextThemeWrapper final Integer dialogId = ids[i]; Bundle dialogState = b.getBundle(savedDialogKeyFor(dialogId)); if (dialogState != null) { - final Dialog dialog = createDialog(dialogId); + // Calling onRestoreInstanceState() below will invoke dispatchOnCreate + // so tell createDialog() not to do it, otherwise we get an exception + final Dialog dialog = createDialog(dialogId, false); mManagedDialogs.put(dialogId, dialog); onPrepareDialog(dialogId, dialog); dialog.onRestoreInstanceState(dialogState); @@ -872,13 +874,13 @@ public class Activity extends ContextThemeWrapper } } - private Dialog createDialog(Integer dialogId) { + private Dialog createDialog(Integer dialogId, boolean dispatchOnCreate) { final Dialog dialog = onCreateDialog(dialogId); if (dialog == null) { throw new IllegalArgumentException("Activity#onCreateDialog did " + "not create a dialog for id " + dialogId); } - dialog.dispatchOnCreate(null); + if (dispatchOnCreate) dialog.dispatchOnCreate(null); return dialog; } @@ -2430,7 +2432,7 @@ public class Activity extends ContextThemeWrapper } Dialog dialog = mManagedDialogs.get(id); if (dialog == null) { - dialog = createDialog(id); + dialog = createDialog(id, true); mManagedDialogs.put(id, dialog); } |