diff options
author | Jean-Baptiste Queru <jbq@google.com> | 2010-10-11 09:15:50 -0700 |
---|---|---|
committer | Android Code Review <code-review@android.com> | 2010-10-11 09:15:50 -0700 |
commit | e3cfd35bf4d430e56456818bf8c84ef4c2c0dfde (patch) | |
tree | 9010208d8fe0f025bd420304539f4208e3513d1d | |
parent | 65f23e71bdf7d9ca8c4aa8ed126ac2bc9a2cbf43 (diff) | |
parent | 0ae2ec88ec8f170cb5548d52bf89fa744b390991 (diff) | |
download | frameworks_base-e3cfd35bf4d430e56456818bf8c84ef4c2c0dfde.zip frameworks_base-e3cfd35bf4d430e56456818bf8c84ef4c2c0dfde.tar.gz frameworks_base-e3cfd35bf4d430e56456818bf8c84ef4c2c0dfde.tar.bz2 |
Merge "Dismissing AlertDialog before destroying WebView."
-rw-r--r-- | core/java/android/webkit/WebView.java | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java index 8e363d6..0ea89a8 100644 --- a/core/java/android/webkit/WebView.java +++ b/core/java/android/webkit/WebView.java @@ -308,6 +308,10 @@ public class WebView extends AbsoluteLayout // true means redraw the screen all-the-time. Only with AUTO_REDRAW_HACK private boolean mAutoRedraw; + // Reference to the AlertDialog displayed by InvokeListBox. + // It's used to dismiss the dialog in destroy if not done before. + private AlertDialog mListBoxDialog = null; + static final String LOGTAG = "webview"; private static class ExtendedZoomControls extends FrameLayout { @@ -1232,6 +1236,10 @@ public class WebView extends AbsoluteLayout */ public void destroy() { clearTextEntry(false); + if (mListBoxDialog != null) { + mListBoxDialog.dismiss(); + mListBoxDialog = null; + } if (mWebViewCore != null) { // Set the handlers to null before destroying WebViewCore so no // more messages will be posted. @@ -7072,7 +7080,7 @@ public class WebView extends AbsoluteLayout EventHub.SINGLE_LISTBOX_CHOICE, -2, 0); }}); } - final AlertDialog dialog = b.create(); + mListBoxDialog = b.create(); listView.setAdapter(adapter); listView.setFocusableInTouchMode(true); // There is a bug (1250103) where the checks in a ListView with @@ -7094,7 +7102,8 @@ public class WebView extends AbsoluteLayout int position, long id) { mWebViewCore.sendMessage( EventHub.SINGLE_LISTBOX_CHOICE, (int)id, 0); - dialog.dismiss(); + mListBoxDialog.dismiss(); + mListBoxDialog = null; } }); if (mSelection != -1) { @@ -7106,13 +7115,14 @@ public class WebView extends AbsoluteLayout adapter.registerDataSetObserver(observer); } } - dialog.setOnCancelListener(new DialogInterface.OnCancelListener() { + mListBoxDialog.setOnCancelListener(new DialogInterface.OnCancelListener() { public void onCancel(DialogInterface dialog) { mWebViewCore.sendMessage( EventHub.SINGLE_LISTBOX_CHOICE, -2, 0); + mListBoxDialog = null; } }); - dialog.show(); + mListBoxDialog.show(); } } |