瀏覽代碼

- InputInfo新增方法:`getInputFilters()`、`setInputFilters(InputFilter[] inputFilters)`、`addInputFilter(InputFilter inputFilter)` 和 `removeInputFilter(InputFilter inputFilter)`(issues:332);
- 尝试性修复 DialogFragment 模式实现下的 WaitDialog 内存泄漏问题(issues:334);
- 修复关于DialogFragmentImpl引发的空指针问题此问题(issues:335);

0.0.49.beta1
- 修复 BlurRelativeLayout 和 BlurLinearLayout 在 iOS 主题下使用 DialogFragment 模式时存在的渲染宽度和高度 <=0 导致的异常(issues:324);
- 修复 IOS 主题下可能存在的 `RSInvalidStateException: Calling RS with no Context active` 异常问题(issues:327);
- 修复可能存在的高频启关对话框过程中,因UI未完成构建被关闭引发的空指针异常(issues:331);

Kongzue 1 年之前
父節點
當前提交
b27867ff7a
共有 1 個文件被更改,包括 15 次插入15 次删除
  1. 15 15
      DialogX/src/main/java/com/kongzue/dialogx/impl/DialogFragmentImpl.java

+ 15 - 15
DialogX/src/main/java/com/kongzue/dialogx/impl/DialogFragmentImpl.java

@@ -38,35 +38,35 @@ import static com.kongzue.dialogx.DialogX.error;
  * @createTime: 2021/7/28 15:45
  */
 public class DialogFragmentImpl extends DialogFragment {
-    
+
     private View dialogView;
     private BaseDialog baseDialog;
-    
+
     public DialogFragmentImpl(BaseDialog baseDialog, View dialogView) {
         this.dialogView = dialogView;
         this.baseDialog = baseDialog;
         activityWeakReference = new WeakReference<>(baseDialog.getOwnActivity());
     }
-    
+
     @Override
     public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
         return dialogView;
     }
-    
+
     WeakReference<Activity> activityWeakReference = null;
-    
+
     @Override
     public void onStart() {
         super.onStart();
         final Activity activity = activityWeakReference.get();
-        
+
         if (getDialog() == null) return;
         Window dialogWindow = getDialog().getWindow();
         if (dialogWindow == null) return;
         dialogWindow.clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
-        
+
         dialogWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
-        
+
         WindowManager.LayoutParams lp = dialogWindow.getAttributes();
         lp.width = WindowManager.LayoutParams.MATCH_PARENT;
         lp.height = WindowManager.LayoutParams.MATCH_PARENT;
@@ -77,7 +77,7 @@ public class DialogFragmentImpl extends DialogFragment {
             public boolean onTouch(View v, MotionEvent event) {
                 for (BaseDialog dialog : BaseDialog.getRunningDialogList()) {
                     if (dialog.getOwnActivity() == activity && dialog != baseDialog) {
-                        if (!(dialog instanceof NoTouchInterface)) {
+                        if (!(dialog instanceof NoTouchInterface) && dialog.getDialogView() != null) {
                             dialog.getDialogView().dispatchTouchEvent(event);
                             return true;
                         }
@@ -85,7 +85,7 @@ public class DialogFragmentImpl extends DialogFragment {
                 }
                 if (baseDialog instanceof NoTouchInterface) {
                     return activity.dispatchTouchEvent(event);
-                }else{
+                } else {
                     return true;
                 }
             }
@@ -97,7 +97,7 @@ public class DialogFragmentImpl extends DialogFragment {
             lp.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
         }
         dialogWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
-        
+
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
             int visibility = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
             if (activity != null) {
@@ -108,7 +108,7 @@ public class DialogFragmentImpl extends DialogFragment {
             dialogWindow.getDecorView().setSystemUiVisibility(visibility);
             dialogWindow.addFlags(
                     WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS |
-                    WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION
+                            WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION
             );
             dialogWindow.setStatusBarColor(Color.TRANSPARENT);
             dialogWindow.setNavigationBarColor(Color.TRANSPARENT);
@@ -116,7 +116,7 @@ public class DialogFragmentImpl extends DialogFragment {
             dialogWindow.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
         }
     }
-    
+
     @Override
     public void show(FragmentManager manager, @Nullable String tag) {
         if (manager == null) {
@@ -124,12 +124,12 @@ public class DialogFragmentImpl extends DialogFragment {
             return;
         }
         //super.show(manager, tag);
-        
+
         FragmentTransaction ft = manager.beginTransaction();
         ft.add(this, tag);
         ft.commitAllowingStateLoss();
     }
-    
+
     @Override
     public void dismiss() {
         dismissAllowingStateLoss();