XPopup icon indicating copy to clipboard operation
XPopup copied to clipboard

第2次show()的时候弹不出来

Open actor20170211030627 opened this issue 1 year ago • 4 comments

XPopup版本 2.10.0

手机系统和型号 Vivo X27, Android 10

描述你的问题 kotlin代码(没有缓存对象, 每次都new)

XPopup.Builder(activity)
    .atView(viewBinding.line)
    .isClickThrough(false)//是否点击弹窗背景时将点击事件透传到Activity下,默认是false
    .dismissOnTouchOutside(true)//点击外部消失
    .autoOpenSoftInput(false)//是否自动打开输入法,当弹窗包含输入框时很有用,默认为false
    .asCustom(GradeNormalView(activity, fragment,
        isShowWrongNum = true,
        isChangeGrade = true
    ) {
        model.gradeId = this.id
        getDatas(true)
    }.setGradeId(model.gradeId)).show()

GradeNormalView里有1个model对象: private val model by activity.viewModels<GradeNormalDialogModel>()

model对象里有几个接口, 还有几个回调监听:

val changeGrade = MutableLiveData<Boolean>()
//
fun changeGrade(gradeId: String, onSuccess: () -> Unit) {
    viewModelScope.launch {
        update(
            api = {
                api.changeGrade(gradeId)
            },
            success = {
                changeGrade.value = true    //这种回调监听会导致第2次弹不出来
                //onSuccess()        //这种方式回调, 第2次才能正常弹出!!
            }
        )
    }
}
  1. 第1次show()正常. 然后点击了里面的某一个item, 比如"司法", 然后在GradeNormalView里会调用model.changeGrade(gradeId)方法, 问题就出在这儿! 调用以上接口后, 如果在GradeNormalView里这样监听:
model.changeGrade.observe(activity) {
    model.selectedGrade?.apply {
        listener(this)
    }
    dismiss()        //感觉这儿dismiss就会出问题
}

然后第2次就弹不起来了, 我也不知道是啥原因.

  1. 但是, 如果不使用上方的回调监听方式, 而是使用onSuccess()直接回调结果, 就不会出问题

actor20170211030627 avatar Dec 12 '23 10:12 actor20170211030627

我也遇到FullScreenPopupView在第二次show的时候概率性弹不出来的问题,换成BottomPopupView就不会出现这个问题 对应版本:com.github.li-xiaojun:XPopup:2.4.6

cgq-source avatar Mar 26 '24 09:03 cgq-source

implementation('com.github.billdizl:XPopup:2.10.4') 百万日活app验证无问题

billdizl avatar Mar 26 '24 10:03 billdizl

implementation('com.github.billdizl:XPopup:2.10.4') 百万日活app验证无问题 是弹不出来啊, 不是报错. 你按照我的代码试一下就知道了啊

actor20170211030627 avatar Jun 08 '24 06:06 actor20170211030627

implementation('com.github.billdizl:XPopup:2.10.4') 百万日活app验证无问题 是弹不出来啊, 不是报错. 你按照我的代码试一下就知道了啊

你用这个implementation('com.github.billdizl:XPopup:2.10.4')试了? 还有问题?show不出来?

billdizl avatar Jun 08 '24 06:06 billdizl