소스 검색

Fixes #9 add on cancel listener

isundil 7 년 전
부모
커밋
9eb3a1eb7d
1개의 변경된 파일23개의 추가작업 그리고 6개의 파일을 삭제
  1. 23 6
      app/src/main/java/info/knacki/pass/ui/alertPrompt/AlertPrompt.java

+ 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;
     }