summaryrefslogtreecommitdiff
path: root/core/java/android/app/Dialog.java
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2011-01-25 16:20:16 -0800
committerAndroid Git Automerger <android-git-automerger@android.com>2011-01-25 16:20:16 -0800
commit17d7cbc14c128c0e6d6a00d8d4e281c5e8075aa3 (patch)
treea8167c203e259726e62c80e74d2d1beffd7d11a1 /core/java/android/app/Dialog.java
parent7f13e47620077e44272f8bc795226fe55b540d33 (diff)
parenta58552e03de2f24aef735e94fcfab12a0078a3b3 (diff)
am a58552e0: am f95bd0fe: Merge "Argh forget to include my final part of the change." into honeycomb
* commit 'a58552e03de2f24aef735e94fcfab12a0078a3b3': Argh forget to include my final part of the change.
Diffstat (limited to 'core/java/android/app/Dialog.java')
-rw-r--r--core/java/android/app/Dialog.java27
1 files changed, 27 insertions, 0 deletions
diff --git a/core/java/android/app/Dialog.java b/core/java/android/app/Dialog.java
index 7b794f2b0399..2bf1ff970123 100644
--- a/core/java/android/app/Dialog.java
+++ b/core/java/android/app/Dialog.java
@@ -85,6 +85,7 @@ public class Dialog implements DialogInterface, Window.Callback,
*/
protected boolean mCancelable = true;
+ private String mCancelAndDismissTaken;
private Message mCancelMessage;
private Message mDismissMessage;
private Message mShowMessage;
@@ -1078,6 +1079,11 @@ public class Dialog implements DialogInterface, Window.Callback,
* @param listener The {@link DialogInterface.OnCancelListener} to use.
*/
public void setOnCancelListener(final OnCancelListener listener) {
+ if (mCancelAndDismissTaken != null) {
+ throw new IllegalStateException(
+ "OnCancelListener is already taken by "
+ + mCancelAndDismissTaken + " and can not be replaced.");
+ }
if (listener != null) {
mCancelMessage = mListenersHandler.obtainMessage(CANCEL, listener);
} else {
@@ -1099,6 +1105,11 @@ public class Dialog implements DialogInterface, Window.Callback,
* @param listener The {@link DialogInterface.OnDismissListener} to use.
*/
public void setOnDismissListener(final OnDismissListener listener) {
+ if (mCancelAndDismissTaken != null) {
+ throw new IllegalStateException(
+ "OnDismissListener is already taken by "
+ + mCancelAndDismissTaken + " and can not be replaced.");
+ }
if (listener != null) {
mDismissMessage = mListenersHandler.obtainMessage(DISMISS, listener);
} else {
@@ -1126,6 +1137,22 @@ public class Dialog implements DialogInterface, Window.Callback,
mDismissMessage = msg;
}
+ /** @hide */
+ public boolean takeCancelAndDismissListeners(String msg, final OnCancelListener cancel,
+ final OnDismissListener dismiss) {
+ if (mCancelAndDismissTaken != null) {
+ mCancelAndDismissTaken = null;
+ } else if (mCancelMessage != null || mDismissMessage != null) {
+ return false;
+ }
+
+ setOnCancelListener(cancel);
+ setOnDismissListener(dismiss);
+ mCancelAndDismissTaken = msg;
+
+ return true;
+ }
+
/**
* By default, this will use the owner Activity's suggested stream type.
*