From 8f27d8a2704901f98b4dd6056997f0cebb5ac1f6 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Sat, 21 Mar 2015 08:08:10 -0500 Subject: [PATCH] Don't finish dialogs on dismiss if positive --- .../com/todoroo/andlib/utility/DialogUtilities.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/todoroo/andlib/utility/DialogUtilities.java b/src/main/java/com/todoroo/andlib/utility/DialogUtilities.java index 7b4467fa9..5a65af811 100644 --- a/src/main/java/com/todoroo/andlib/utility/DialogUtilities.java +++ b/src/main/java/com/todoroo/andlib/utility/DialogUtilities.java @@ -124,6 +124,7 @@ public class DialogUtilities { } tryOnUiThread(activity, new Runnable() { + final boolean[] selectedOk = new boolean[1]; @Override public void run() { AlertDialog dialog = new AlertDialog.Builder(activity) @@ -131,13 +132,21 @@ public class DialogUtilities { .setMessage(text) .setTitle(title) .setIcon(icon) - .setPositiveButton(okTitleId, okListener) + .setPositiveButton(okTitleId, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + selectedOk[0] = true; + okListener.onClick(dialog, which); + } + }) .setNegativeButton(cancelTitleId, cancelListener) .show(); dialog.setOnDismissListener(new DialogInterface.OnDismissListener() { @Override public void onDismiss(DialogInterface dialog) { - cancelListener.onClick(dialog, Dialog.BUTTON_NEGATIVE); + if (!selectedOk[0]) { + cancelListener.onClick(dialog, Dialog.BUTTON_NEGATIVE); + } } }); dialog.setOwnerActivity(activity);