Browse Source

fix bugs.

kongzue 4 years ago
parent
commit
ad8cb73230

+ 5 - 5
DialogX/src/main/java/com/kongzue/dialogx/dialogs/BottomDialog.java

@@ -50,7 +50,7 @@ public class BottomDialog extends BaseDialog {
     protected CharSequence message;
     protected CharSequence cancelText = "取消";
     protected boolean allowInterceptTouch = true;
-    protected OnDialogButtonClickListener cancelButtonClickListener;
+    protected OnDialogButtonClickListener<BottomDialog> cancelButtonClickListener;
     
     protected TextInfo titleTextInfo;
     protected TextInfo messageTextInfo;
@@ -486,12 +486,12 @@ public class BottomDialog extends BaseDialog {
         return this;
     }
     
-    public BottomDialog setCancelButton(OnDialogButtonClickListener cancelButtonClickListener) {
+    public BottomDialog setCancelButton(OnDialogButtonClickListener<BottomDialog> cancelButtonClickListener) {
         this.cancelButtonClickListener = cancelButtonClickListener;
         return this;
     }
     
-    public BottomDialog setCancelButton(CharSequence cancelText, OnDialogButtonClickListener cancelButtonClickListener) {
+    public BottomDialog setCancelButton(CharSequence cancelText, OnDialogButtonClickListener<BottomDialog> cancelButtonClickListener) {
         this.cancelText = cancelText;
         this.cancelButtonClickListener = cancelButtonClickListener;
         return this;
@@ -528,11 +528,11 @@ public class BottomDialog extends BaseDialog {
         return this;
     }
     
-    public OnDialogButtonClickListener getCancelButtonClickListener() {
+    public OnDialogButtonClickListener<BottomDialog> getCancelButtonClickListener() {
         return cancelButtonClickListener;
     }
     
-    public BottomDialog setCancelButtonClickListener(OnDialogButtonClickListener cancelButtonClickListener) {
+    public BottomDialog setCancelButtonClickListener(OnDialogButtonClickListener<BottomDialog> cancelButtonClickListener) {
         this.cancelButtonClickListener = cancelButtonClickListener;
         refreshUI();
         return this;

+ 15 - 15
DialogX/src/main/java/com/kongzue/dialogx/dialogs/InputDialog.java

@@ -106,12 +106,12 @@ public class InputDialog extends MessageDialog {
         return this;
     }
     
-    public InputDialog setOkButton(OnInputDialogButtonClickListener okButtonClickListener) {
+    public InputDialog setOkButton(OnInputDialogButtonClickListener<InputDialog> okButtonClickListener) {
         this.okButtonClickListener = okButtonClickListener;
         return this;
     }
     
-    public InputDialog setOkButton(CharSequence okText, OnInputDialogButtonClickListener okButtonClickListener) {
+    public InputDialog setOkButton(CharSequence okText, OnInputDialogButtonClickListener<InputDialog> okButtonClickListener) {
         this.okText = okText;
         this.okButtonClickListener = okButtonClickListener;
         refreshUI();
@@ -128,12 +128,12 @@ public class InputDialog extends MessageDialog {
         return this;
     }
     
-    public InputDialog setCancelButton(OnInputDialogButtonClickListener cancelButtonClickListener) {
+    public InputDialog setCancelButton(OnInputDialogButtonClickListener<InputDialog> cancelButtonClickListener) {
         this.cancelButtonClickListener = cancelButtonClickListener;
         return this;
     }
     
-    public InputDialog setCancelButton(CharSequence cancelText, OnInputDialogButtonClickListener cancelButtonClickListener) {
+    public InputDialog setCancelButton(CharSequence cancelText, OnInputDialogButtonClickListener<InputDialog> cancelButtonClickListener) {
         this.cancelText = cancelText;
         this.cancelButtonClickListener = cancelButtonClickListener;
         refreshUI();
@@ -150,41 +150,41 @@ public class InputDialog extends MessageDialog {
         return this;
     }
     
-    public InputDialog setOtherButton(OnInputDialogButtonClickListener otherButtonClickListener) {
+    public InputDialog setOtherButton(OnInputDialogButtonClickListener<InputDialog> otherButtonClickListener) {
         this.otherButtonClickListener = otherButtonClickListener;
         return this;
     }
     
-    public InputDialog setOtherButton(CharSequence otherText, OnInputDialogButtonClickListener otherButtonClickListener) {
+    public InputDialog setOtherButton(CharSequence otherText, OnInputDialogButtonClickListener<InputDialog> otherButtonClickListener) {
         this.otherText = otherText;
         this.otherButtonClickListener = otherButtonClickListener;
         refreshUI();
         return this;
     }
     
-    public OnInputDialogButtonClickListener getOkButtonClickListener() {
-        return (OnInputDialogButtonClickListener) okButtonClickListener;
+    public OnInputDialogButtonClickListener<InputDialog> getInputOkButtonClickListener() {
+        return (OnInputDialogButtonClickListener<InputDialog>) okButtonClickListener;
     }
     
-    public InputDialog setOkButtonClickListener(OnInputDialogButtonClickListener okButtonClickListener) {
+    public InputDialog setOkButtonClickListener(OnInputDialogButtonClickListener<InputDialog> okButtonClickListener) {
         this.okButtonClickListener = okButtonClickListener;
         return this;
     }
     
-    public OnInputDialogButtonClickListener getCancelButtonClickListener() {
-        return (OnInputDialogButtonClickListener) cancelButtonClickListener;
+    public OnInputDialogButtonClickListener getInputCancelButtonClickListener() {
+        return (OnInputDialogButtonClickListener<InputDialog>) cancelButtonClickListener;
     }
     
-    public InputDialog setCancelButtonClickListener(OnInputDialogButtonClickListener cancelButtonClickListener) {
+    public InputDialog setCancelButtonClickListener(OnInputDialogButtonClickListener<InputDialog> cancelButtonClickListener) {
         this.cancelButtonClickListener = cancelButtonClickListener;
         return this;
     }
     
-    public OnInputDialogButtonClickListener getOtherButtonClickListener() {
-        return (OnInputDialogButtonClickListener) otherButtonClickListener;
+    public OnInputDialogButtonClickListener getInputOtherButtonClickListener() {
+        return (OnInputDialogButtonClickListener<InputDialog>) otherButtonClickListener;
     }
     
-    public InputDialog setOtherButtonClickListener(OnInputDialogButtonClickListener otherButtonClickListener) {
+    public InputDialog setOtherButtonClickListener(OnInputDialogButtonClickListener<InputDialog> otherButtonClickListener) {
         this.otherButtonClickListener = otherButtonClickListener;
         return this;
     }

+ 31 - 22
DialogX/src/main/java/com/kongzue/dialogx/dialogs/MessageDialog.java

@@ -23,6 +23,7 @@ import com.kongzue.dialogx.DialogX;
 import com.kongzue.dialogx.R;
 import com.kongzue.dialogx.impl.AnimatorListenerEndCallBack;
 import com.kongzue.dialogx.interfaces.BaseDialog;
+import com.kongzue.dialogx.interfaces.BaseOnDialogClickCallback;
 import com.kongzue.dialogx.interfaces.DialogConvertViewInterface;
 import com.kongzue.dialogx.interfaces.DialogLifecycleCallback;
 import com.kongzue.dialogx.interfaces.DialogXStyle;
@@ -72,9 +73,9 @@ public class MessageDialog extends BaseDialog {
     protected TextInfo otherTextInfo;
     protected InputInfo inputInfo;
     
-    protected OnDialogButtonClickListener okButtonClickListener;
-    protected OnDialogButtonClickListener cancelButtonClickListener;
-    protected OnDialogButtonClickListener otherButtonClickListener;
+    protected BaseOnDialogClickCallback okButtonClickListener;
+    protected BaseOnDialogClickCallback cancelButtonClickListener;
+    protected BaseOnDialogClickCallback otherButtonClickListener;
     
     protected int buttonOrientation;
     
@@ -249,8 +250,8 @@ public class MessageDialog extends BaseDialog {
                             if (!((OnInputDialogButtonClickListener) okButtonClickListener).onClick(me, v, s)) {
                                 doDismiss(v);
                             }
-                        } else {
-                            if (!okButtonClickListener.onClick(me, v)) {
+                        } else if (okButtonClickListener instanceof OnDialogButtonClickListener) {
+                            if (!((OnDialogButtonClickListener) okButtonClickListener).onClick(me, v)) {
                                 doDismiss(v);
                             }
                         }
@@ -269,7 +270,7 @@ public class MessageDialog extends BaseDialog {
                                 doDismiss(v);
                             }
                         } else {
-                            if (!cancelButtonClickListener.onClick(me, v)) {
+                            if (!((OnDialogButtonClickListener) cancelButtonClickListener).onClick(me, v)) {
                                 doDismiss(v);
                             }
                         }
@@ -288,7 +289,7 @@ public class MessageDialog extends BaseDialog {
                                 doDismiss(v);
                             }
                         } else {
-                            if (!otherButtonClickListener.onClick(me, v)) {
+                            if (!((OnDialogButtonClickListener) otherButtonClickListener).onClick(me, v)) {
                                 doDismiss(v);
                             }
                         }
@@ -554,12 +555,12 @@ public class MessageDialog extends BaseDialog {
         return this;
     }
     
-    public MessageDialog setOkButton(OnDialogButtonClickListener okButtonClickListener) {
+    public MessageDialog setOkButton(OnDialogButtonClickListener<MessageDialog> okButtonClickListener) {
         this.okButtonClickListener = okButtonClickListener;
         return this;
     }
     
-    public MessageDialog setOkButton(CharSequence okText, OnDialogButtonClickListener okButtonClickListener) {
+    public MessageDialog setOkButton(CharSequence okText, OnDialogButtonClickListener<MessageDialog> okButtonClickListener) {
         this.okText = okText;
         this.okButtonClickListener = okButtonClickListener;
         refreshUI();
@@ -576,12 +577,12 @@ public class MessageDialog extends BaseDialog {
         return this;
     }
     
-    public MessageDialog setCancelButton(OnDialogButtonClickListener cancelButtonClickListener) {
+    public MessageDialog setCancelButton(OnDialogButtonClickListener<MessageDialog> cancelButtonClickListener) {
         this.cancelButtonClickListener = cancelButtonClickListener;
         return this;
     }
     
-    public MessageDialog setCancelButton(CharSequence cancelText, OnDialogButtonClickListener cancelButtonClickListener) {
+    public MessageDialog setCancelButton(CharSequence cancelText, OnDialogButtonClickListener<MessageDialog> cancelButtonClickListener) {
         this.cancelText = cancelText;
         this.cancelButtonClickListener = cancelButtonClickListener;
         refreshUI();
@@ -598,41 +599,41 @@ public class MessageDialog extends BaseDialog {
         return this;
     }
     
-    public MessageDialog setOtherButton(OnDialogButtonClickListener otherButtonClickListener) {
+    public MessageDialog setOtherButton(OnDialogButtonClickListener<MessageDialog> otherButtonClickListener) {
         this.otherButtonClickListener = otherButtonClickListener;
         return this;
     }
     
-    public MessageDialog setOtherButton(CharSequence otherText, OnDialogButtonClickListener otherButtonClickListener) {
+    public MessageDialog setOtherButton(CharSequence otherText, OnDialogButtonClickListener<MessageDialog> otherButtonClickListener) {
         this.otherText = otherText;
         this.otherButtonClickListener = otherButtonClickListener;
         refreshUI();
         return this;
     }
     
-    public OnDialogButtonClickListener getOkButtonClickListener() {
-        return okButtonClickListener;
+    public OnDialogButtonClickListener<MessageDialog> getOkButtonClickListener() {
+        return (OnDialogButtonClickListener<MessageDialog>) okButtonClickListener;
     }
     
-    public MessageDialog setOkButtonClickListener(OnDialogButtonClickListener okButtonClickListener) {
+    public MessageDialog setOkButtonClickListener(OnDialogButtonClickListener<MessageDialog> okButtonClickListener) {
         this.okButtonClickListener = okButtonClickListener;
         return this;
     }
     
-    public OnDialogButtonClickListener getCancelButtonClickListener() {
-        return cancelButtonClickListener;
+    public OnDialogButtonClickListener<MessageDialog> getCancelButtonClickListener() {
+        return (OnDialogButtonClickListener<MessageDialog>) cancelButtonClickListener;
     }
     
-    public MessageDialog setCancelButtonClickListener(OnDialogButtonClickListener cancelButtonClickListener) {
+    public MessageDialog setCancelButtonClickListener(OnDialogButtonClickListener<MessageDialog> cancelButtonClickListener) {
         this.cancelButtonClickListener = cancelButtonClickListener;
         return this;
     }
     
-    public OnDialogButtonClickListener getOtherButtonClickListener() {
-        return otherButtonClickListener;
+    public OnDialogButtonClickListener<MessageDialog> getOtherButtonClickListener() {
+        return (OnDialogButtonClickListener<MessageDialog>) otherButtonClickListener;
     }
     
-    public MessageDialog setOtherButtonClickListener(OnDialogButtonClickListener otherButtonClickListener) {
+    public MessageDialog setOtherButtonClickListener(OnDialogButtonClickListener<MessageDialog> otherButtonClickListener) {
         this.otherButtonClickListener = otherButtonClickListener;
         return this;
     }
@@ -766,4 +767,12 @@ public class MessageDialog extends BaseDialog {
         refreshUI();
         return this;
     }
+    
+    public String getInputText() {
+        if (dialogImpl.txtInput != null) {
+            return dialogImpl.txtInput.getText().toString();
+        } else {
+            return "";
+        }
+    }
 }

+ 8 - 3
DialogX/src/main/java/com/kongzue/dialogx/interfaces/BaseDialog.java

@@ -58,9 +58,14 @@ public class BaseDialog {
         if (DEBUGMODE) Log.e(">>>", o.toString());
     }
     
-    public static void show(View view) {
-        if (rootFrameLayout == null || view == null) return;
-        rootFrameLayout.get().addView(view);
+    public static void show(final View view) {
+        if (rootFrameLayout == null || view == null || rootFrameLayout.get() == null) return;
+        rootFrameLayout.get().post(new Runnable() {
+            @Override
+            public void run() {
+                rootFrameLayout.get().addView(view);
+            }
+        });
     }
     
     public static void dismiss(View dialogView) {

+ 11 - 0
DialogX/src/main/java/com/kongzue/dialogx/interfaces/BaseOnDialogClickCallback.java

@@ -0,0 +1,11 @@
+package com.kongzue.dialogx.interfaces;
+
+/**
+ * @author: Kongzue
+ * @github: https://github.com/kongzue/
+ * @homepage: http://kongzue.com/
+ * @mail: myzcxhh@live.cn
+ * @createTime: 2020/10/22 15:07
+ */
+public interface BaseOnDialogClickCallback {
+}

+ 2 - 2
DialogX/src/main/java/com/kongzue/dialogx/interfaces/OnDialogButtonClickListener.java

@@ -9,8 +9,8 @@ import android.view.View;
  * Mail: myzcxhh@live.cn
  * CreateTime: 2019/3/29 18:44
  */
-public interface OnDialogButtonClickListener {
+public interface OnDialogButtonClickListener<D extends BaseDialog> extends BaseOnDialogClickCallback{
     
-    boolean onClick(BaseDialog baseDialog, View v);
+    boolean onClick(D baseDialog, View v);
     
 }

+ 4 - 2
DialogX/src/main/java/com/kongzue/dialogx/interfaces/OnInputDialogButtonClickListener.java

@@ -2,6 +2,8 @@ package com.kongzue.dialogx.interfaces;
 
 import android.view.View;
 
+import com.kongzue.dialogx.dialogs.MessageDialog;
+
 /**
  * Author: @Kongzue
  * Github: https://github.com/kongzue/
@@ -9,7 +11,7 @@ import android.view.View;
  * Mail: myzcxhh@live.cn
  * CreateTime: 2019/4/8 21:09
  */
-public interface OnInputDialogButtonClickListener extends OnDialogButtonClickListener{
+public interface OnInputDialogButtonClickListener<D extends BaseDialog> extends BaseOnDialogClickCallback{
     
-    boolean onClick(BaseDialog baseDialog, View v, String inputStr);
+    boolean onClick(D baseDialog, View v, String inputStr);
 }

+ 13 - 3
app/src/main/java/com/kongzue/dialogxdemo/MainActivity.java

@@ -41,6 +41,7 @@ import com.kongzue.dialogx.interfaces.OnBackPressedListener;
 import com.kongzue.dialogx.interfaces.OnBindView;
 import com.kongzue.dialogx.interfaces.OnDialogButtonClickListener;
 import com.kongzue.dialogx.interfaces.OnIconChangeCallBack;
+import com.kongzue.dialogx.interfaces.OnInputDialogButtonClickListener;
 import com.kongzue.dialogx.interfaces.OnMenuItemClickListener;
 import com.kongzue.dialogx.style.IOSStyle;
 import com.kongzue.dialogx.style.KongzueStyle;
@@ -223,9 +224,9 @@ public class MainActivity extends BaseActivity {
         btnMessageDialog.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
-                MessageDialog.show("标题", "正文内容", "确定").setOkButton(new OnDialogButtonClickListener() {
+                MessageDialog.show("标题", "正文内容", "确定").setOkButton(new OnDialogButtonClickListener<MessageDialog>() {
                     @Override
-                    public boolean onClick(BaseDialog baseDialog, View v) {
+                    public boolean onClick(MessageDialog baseDialog, View v) {
                         toast("点击确定按钮");
                         return false;
                     }
@@ -248,7 +249,16 @@ public class MainActivity extends BaseActivity {
         btnInputDialog.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
-                new InputDialog("标题", "正文内容", "确定", "取消", "正在输入的文字").setCancelable(false).show();
+                new InputDialog("标题", "正文内容", "确定", "取消", "正在输入的文字")
+                        .setCancelable(false)
+                        .setOkButton(new OnInputDialogButtonClickListener<InputDialog>() {
+                            @Override
+                            public boolean onClick(InputDialog baseDialog, View v, String inputStr) {
+                                toast("输入的内容:" + inputStr);
+                                return false;
+                            }
+                        })
+                        .show();
             }
         });