junixapp/XPopup

复用弹窗时 ,进入到第二个页面再返回来再点击弹窗不弹出弹层,不复用就没问题

Closed this issue · 3 comments

XPopup版本
如2.9.18

手机系统和型号
realme x50 Android 12

描述你的问题
复用弹窗时 ,进入到第二个页面再返回来再点击弹窗不弹出弹层,不复用就没问题

上代码吧,无法复现

private fun showAddreessDialog() {
activity?.let {
if (shoppingcartMiniAddressBuyDialog == null) {
shoppingcartMiniAddressBuyDialog =
XpopDialogUtils().shoppingcartMiniAddressBuyDialog(
it,
lifecycle,
true,
false,
false,
false,
object : ShoppingcartPopConfirmAndCancelListener {
override fun dialogCancel(mBasePop: BasePopupView?) {
mBasePop?.dismiss()
}

                    override fun dialogAddreessAddListener(mBasePop: BasePopupView?) {
               
                        mBasePop?.dismiss()
                    }

                    override fun dialogConfirm(
                        mBasePop: BasePopupView?,
                        mBagData: BagEntity?
                    ) {
                     
                        mBasePop?.dismiss()
                    }

                    override fun dialogNoDataConfirm(mBasePop: BasePopupView?) {
                     
                        mBasePop?.dismiss()
                    }
                }, this, it, false
            ) as MiniShoppingcarAddresstBootomDialog?
        } else {
            shoppingcartMiniAddressBuyDialog?.setListData(false)
        }
        shoppingcartMiniAddressBuyDialog?.show()
    }
}
  • 购物车第二个页面 mini 地址选择小弹窗
    */
    fun shoppingcartMiniAddressBuyDialog(
    mContext: Context?,
    mLifecycle: Lifecycle?,
    dismissOnTouchOutside: Boolean,
    dismissOnBackPressed: Boolean,
    isViewMode: Boolean,
    isDestroyOnDismiss: Boolean,
    mPopConfirmAndCancelListener: ShoppingcartPopConfirmAndCancelListener?,
    owner: LifecycleOwner?,
    mActviity: Activity?,
    isOrderplace: Boolean
    ): BasePopupView? {
    if (mContext == null) {
    return null
    }
    return XPopup.Builder(mContext)
    .customHostLifecycle(mLifecycle)
    .dismissOnTouchOutside(dismissOnTouchOutside)
    .dismissOnBackPressed(dismissOnBackPressed)
    .isViewMode(isViewMode) //开启View实现
    .isDestroyOnDismiss(isDestroyOnDismiss)
    .isLightNavigationBar(true)
    .isLightStatusBar(true)
    .moveUpToKeyboard(false)
    .popupAnimation(PopupAnimation.ScrollAlphaFromBottom)
    .asCustom(
    MiniShoppingcarAddresstBootomDialog(
    mContext, mPopConfirmAndCancelListener, owner, mActviity, isOrderplace
    )
    )
    }

在onresurm的时候 shoppingcartMiniAddressBuyDialog?.dismiss()

然后进入第二个页面返回来 再次点击调用showAddreessDialog()时,会弹出dialog但是随着立马给关闭的,几乎无感知的关闭
但是不复用。就没问题

主要原因是因为我在onresrum时 将这个dissmiss了
image
去掉这个就能正常弹出,但是这个应该也属于无法弹出的bug 需要修复