Kaynağa Gözat

1、修复聊天弹窗无法正常加载数据问题;

yzs 4 yıl önce
ebeveyn
işleme
2dd8478d0b

+ 16 - 10
uchat_im/src/main/java/com/shanp/youqi/im/dialog/ConversationDialog.kt

@@ -1,13 +1,14 @@
 package com.shanp.youqi.im.dialog
 
 import android.os.Bundle
+import android.text.TextUtils
 import android.widget.FrameLayout
-import androidx.fragment.app.DialogFragment
 import com.alibaba.android.arouter.facade.annotation.Autowired
 import com.alibaba.android.arouter.facade.annotation.Route
 import com.alibaba.android.arouter.launcher.ARouter
 import com.blankj.utilcode.util.FragmentUtils
 import com.blankj.utilcode.util.KeyboardUtils
+import com.blankj.utilcode.util.ToastUtils
 import com.shanp.youqi.common.app.Route.RouterUrl
 import com.shanp.youqi.common.base.BaseDialogFragment
 import com.shanp.youqi.common.base.BaseViewHolder
@@ -29,15 +30,15 @@ class ConversationDialog : BaseDialogFragment() {
 
     @JvmField
     @Autowired(name = "targetId")
-    var targetId: String = ""
+    var targetId: String? = ""
 
     @JvmField
     @Autowired(name = "targetUserName")
-    var targetUserName: String = ""
+    var targetUserName: String? = ""
 
     @JvmField
     @Autowired(name = "targetHeadImg")
-    var targetHeadImg: String = ""
+    var targetHeadImg: String? = ""
 
     private lateinit var flContainer: FrameLayout
 
@@ -51,20 +52,25 @@ class ConversationDialog : BaseDialogFragment() {
         setGravity(DialogGravity.BOTTOM)
         setDimAmount(0.0f)
         setWidthFull(true)
-        setOutCancel(false)
+        setOutCancel(true)
     }
 
-    override fun onCreate(savedInstanceState: Bundle?) {
-        super.onCreate(savedInstanceState)
-        ARouter.getInstance().inject(this)
-    }
 
     override fun convert(holder: BaseViewHolder, dialog: BaseDialogFragment?) {
+        ARouter.getInstance().inject(this)
+        if (TextUtils.isEmpty(targetId)) {
+            ToastUtils.showShort("数据异常,请稍后再试")
+            this.dismiss()
+            return
+        }
+        holder.setOnClickListener(R.id.rl_layout) {
+            this.dismiss()
+        }
         upHeight = AutoSizeUtils.dp2px(mContext, 317.5f)
         downHeight = AutoSizeUtils.dp2px(mContext, 402f)
         currentHeight = downHeight
         flContainer = holder.getView(R.id.fl_container_conversation)
-        fragment.setParam(targetId, targetUserName, targetHeadImg)
+        fragment.setParam(targetId!!, targetUserName!!, targetHeadImg!!)
         FragmentUtils.add(childFragmentManager, fragment, R.id.fl_container_conversation)
         activity?.window?.let {
             KeyboardUtils.registerSoftInputChangedListener(it) { height ->

+ 2 - 6
uchat_im/src/main/java/com/shanp/youqi/im/dialog/MessageListDialog.kt

@@ -32,13 +32,9 @@ class MessageListDialog : BaseDialogFragment() {
         setDimAmount(0.0f)
         setWidthFull(true)
     }
-
-    override fun onCreate(savedInstanceState: Bundle?) {
-        super.onCreate(savedInstanceState)
-        ARouter.getInstance().inject(this)
-    }
-
+    
     override fun convert(holder: BaseViewHolder, dialog: BaseDialogFragment?) {
+        ARouter.getInstance().inject(this)
         upHeight = AutoSizeUtils.dp2px(mContext, 317.5f)
         downHeight = AutoSizeUtils.dp2px(mContext, 402f)
         flContainer = holder.getView(R.id.fl_container_message_list)

+ 9 - 0
uchat_im/src/main/java/com/shanp/youqi/im/fragment/UChatConversationOnlyTextFragment.kt

@@ -316,4 +316,13 @@ class UChatConversationOnlyTextFragment : UChatFragment() {
         }
     }
 
+    override fun onDestroyView() {
+        activity?.let {
+            if (KeyboardUtils.isSoftInputVisible(activity!!)) {
+                KeyboardUtils.hideSoftInput(binding.etContent)
+            }
+        }
+        super.onDestroyView()
+    }
+
 }

+ 1 - 0
uchat_im/src/main/res/layout/im_dialog_conversation_layout.xml

@@ -4,6 +4,7 @@
     android:layout_height="wrap_content">
 
     <RelativeLayout
+        android:id="@+id/rl_layout"
         android:layout_width="match_parent"
         android:layout_height="402dp">