diff options
| -rw-r--r-- | api/current.txt | 1 | ||||
| -rw-r--r-- | core/java/android/app/AlertDialog.java | 18 | ||||
| -rw-r--r-- | core/java/android/app/Dialog.java | 10 | ||||
| -rw-r--r-- | core/java/com/android/internal/app/AlertController.java | 1 |
4 files changed, 26 insertions, 4 deletions
diff --git a/api/current.txt b/api/current.txt index b435ad0b294c..720681ab5100 100644 --- a/api/current.txt +++ b/api/current.txt @@ -3012,6 +3012,7 @@ package android.app { method public android.app.AlertDialog.Builder setNeutralButton(int, android.content.DialogInterface.OnClickListener); method public android.app.AlertDialog.Builder setNeutralButton(java.lang.CharSequence, android.content.DialogInterface.OnClickListener); method public android.app.AlertDialog.Builder setOnCancelListener(android.content.DialogInterface.OnCancelListener); + method public android.app.AlertDialog.Builder setOnDismissListener(android.content.DialogInterface.OnDismissListener); method public android.app.AlertDialog.Builder setOnItemSelectedListener(android.widget.AdapterView.OnItemSelectedListener); method public android.app.AlertDialog.Builder setOnKeyListener(android.content.DialogInterface.OnKeyListener); method public android.app.AlertDialog.Builder setPositiveButton(int, android.content.DialogInterface.OnClickListener); diff --git a/core/java/android/app/AlertDialog.java b/core/java/android/app/AlertDialog.java index e37b3faae054..7809e73e6f56 100644 --- a/core/java/android/app/AlertDialog.java +++ b/core/java/android/app/AlertDialog.java @@ -566,7 +566,14 @@ public class AlertDialog extends Dialog implements DialogInterface { /** * Sets the callback that will be called if the dialog is canceled. + * + * <p>Even in a cancelable dialog, the dialog may be dismissed for reasons other than + * being canceled or one of the supplied choices being selected. + * If you are interested in listening for all cases where the dialog is dismissed + * and not just when it is canceled, see + * {@link #setOnDismissListener(android.content.DialogInterface.OnDismissListener) setOnDismissListener}.</p> * @see #setCancelable(boolean) + * @see #setOnDismissListener(android.content.DialogInterface.OnDismissListener) * * @return This Builder object to allow for chaining of calls to set methods */ @@ -576,6 +583,16 @@ public class AlertDialog extends Dialog implements DialogInterface { } /** + * Sets the callback that will be called when the dialog is dismissed for any reason. + * + * @return This Builder object to allow for chaining of calls to set methods + */ + public Builder setOnDismissListener(OnDismissListener onDismissListener) { + P.mOnDismissListener = onDismissListener; + return this; + } + + /** * Sets the callback that will be called if a key is dispatched to the dialog. * * @return This Builder object to allow for chaining of calls to set methods @@ -917,6 +934,7 @@ public class AlertDialog extends Dialog implements DialogInterface { dialog.setCanceledOnTouchOutside(true); } dialog.setOnCancelListener(P.mOnCancelListener); + dialog.setOnDismissListener(P.mOnDismissListener); if (P.mOnKeyListener != null) { dialog.setOnKeyListener(P.mOnKeyListener); } diff --git a/core/java/android/app/Dialog.java b/core/java/android/app/Dialog.java index 2cc3b02e5080..16112cb31b76 100644 --- a/core/java/android/app/Dialog.java +++ b/core/java/android/app/Dialog.java @@ -1106,10 +1106,12 @@ public class Dialog implements DialogInterface, Window.Callback, /** * Set a listener to be invoked when the dialog is canceled. - * <p> - * This will only be invoked when the dialog is canceled, if the creator - * needs to know when it is dismissed in general, use - * {@link #setOnDismissListener}. + * + * <p>This will only be invoked when the dialog is canceled. + * Cancel events alone will not capture all ways that + * the dialog might be dismissed. If the creator needs + * to know when a dialog is dismissed in general, use + * {@link #setOnDismissListener}.</p> * * @param listener The {@link DialogInterface.OnCancelListener} to use. */ diff --git a/core/java/com/android/internal/app/AlertController.java b/core/java/com/android/internal/app/AlertController.java index 2061c905ebb0..bcf0ea496bc8 100644 --- a/core/java/com/android/internal/app/AlertController.java +++ b/core/java/com/android/internal/app/AlertController.java @@ -751,6 +751,7 @@ public class AlertController { public DialogInterface.OnClickListener mNeutralButtonListener; public boolean mCancelable; public DialogInterface.OnCancelListener mOnCancelListener; + public DialogInterface.OnDismissListener mOnDismissListener; public DialogInterface.OnKeyListener mOnKeyListener; public CharSequence[] mItems; public ListAdapter mAdapter; |