Parcourir la source

Fixes #9 add on cancel listener

isundil il y a 7 ans
Parent
commit
9eb3a1eb7d

+ 23 - 6
app/src/main/java/info/knacki/pass/ui/alertPrompt/AlertPrompt.java

@@ -9,13 +9,33 @@ public class AlertPrompt {
     protected final AlertDialog.Builder fAlertBuilder;
     protected android.app.AlertDialog fDialog;
     protected View fView = null;
+    protected final DismissListener fOnDismiss;
 
     public interface OnClickListener {
         void onClick(DialogInterface dialogInterface, View view);
     }
 
+    private class DismissListener implements DialogInterface.OnClickListener, DialogInterface.OnCancelListener {
+        private OnClickListener fListener;
+
+        @Override
+        public void onClick(DialogInterface dialog, int which) {
+            fListener.onClick(dialog, fView);
+        }
+        
+        @Override
+        public void onCancel(DialogInterface dialog) {
+            fListener.onClick(dialog, fView);
+        }
+
+        void SetListener(OnClickListener listener) {
+            fListener = listener;
+        }
+    }
+
     public AlertPrompt(Context c) {
         fAlertBuilder = new AlertDialog.Builder(c);
+        fOnDismiss = new DismissListener();
     }
 
     public AlertPrompt setView(View v) {
@@ -40,12 +60,9 @@ public class AlertPrompt {
     }
 
     public AlertPrompt setNegativeButton(int textId, final OnClickListener listener) {
-        fAlertBuilder.setNegativeButton(textId, new DialogInterface.OnClickListener() {
-            @Override
-            public void onClick(DialogInterface dialogInterface, int i) {
-                listener.onClick(dialogInterface, fView);
-            }
-        });
+        fOnDismiss.SetListener(listener);
+        fAlertBuilder.setNegativeButton(textId, fOnDismiss);
+        fAlertBuilder.setOnCancelListener(fOnDismiss);
         return this;
     }