diff options
| author | 2011-11-02 10:33:52 -0700 | |
|---|---|---|
| committer | 2011-11-02 10:33:52 -0700 | |
| commit | 7a5a50c12f6a6e094d1e8aa7514df37f1176354a (patch) | |
| tree | 09341206f82e3109a2b13e5a1b2ffa0d2adbc03d | |
| parent | e5d0f19953189fdd0e2661ebb7f0ea925f14ea13 (diff) | |
| parent | 89fc3acd4bfb61c7b578f0c9e713d9ea819604e4 (diff) | |
Merge "Bug 5513073 - IllegalArgumentException: View not attached to window manager" into ics-mr1
| -rw-r--r-- | core/java/android/app/Dialog.java | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/core/java/android/app/Dialog.java b/core/java/android/app/Dialog.java index 72e63836447e..f1ce2bb4adf9 100644 --- a/core/java/android/app/Dialog.java +++ b/core/java/android/app/Dialog.java @@ -28,6 +28,7 @@ import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.os.Message; +import android.util.Log; import android.util.TypedValue; import android.view.ActionMode; import android.view.ContextMenu; @@ -77,6 +78,7 @@ import java.lang.ref.WeakReference; */ public class Dialog implements DialogInterface, Window.Callback, KeyEvent.Callback, OnCreateContextMenuListener { + private static final String TAG = "Dialog"; private Activity mOwnerActivity; final Context mContext; @@ -300,15 +302,21 @@ public class Dialog implements DialogInterface, Window.Callback, if (Thread.currentThread() != mUiThread) { mHandler.post(mDismissAction); } else { + mHandler.removeCallbacks(mDismissAction); mDismissAction.run(); } } - private void dismissDialog() { + void dismissDialog() { if (mDecor == null || !mShowing) { return; } + if (mWindow.isDestroyed()) { + Log.e(TAG, "Tried to dismissDialog() but the Dialog's window was already destroyed!"); + return; + } + try { mWindowManager.removeView(mDecor); } finally { |