XPopup
XPopup copied to clipboard
第2次show()的时候弹不出来
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次show()正常.
然后点击了里面的某一个item, 比如"司法", 然后在
GradeNormalView
里会调用model.changeGrade(gradeId)
方法, 问题就出在这儿! 调用以上接口后, 如果在GradeNormalView
里这样监听:
model.changeGrade.observe(activity) { model.selectedGrade?.apply { listener(this) } dismiss() //感觉这儿dismiss就会出问题 }
然后第2次就弹不起来了, 我也不知道是啥原因.
- 但是, 如果不使用上方的回调监听方式, 而是使用
onSuccess()
直接回调结果, 就不会出问题
我也遇到FullScreenPopupView在第二次show的时候概率性弹不出来的问题,换成BottomPopupView就不会出现这个问题 对应版本:com.github.li-xiaojun:XPopup:2.4.6
implementation('com.github.billdizl:XPopup:2.10.4') 百万日活app验证无问题
implementation('com.github.billdizl:XPopup:2.10.4') 百万日活app验证无问题 是弹不出来啊, 不是报错. 你按照我的代码试一下就知道了啊
implementation('com.github.billdizl:XPopup:2.10.4') 百万日活app验证无问题 是弹不出来啊, 不是报错. 你按照我的代码试一下就知道了啊
你用这个implementation('com.github.billdizl:XPopup:2.10.4')试了? 还有问题?show不出来?