AlertDialog只在晚些时候出现(奇怪的行为)Android



我正在将数据上传到Web服务器。在我的片段上,我有一个开始上传的按钮。有两个阶段,我试图通过不可取消的AlertDialog解决方案来完成用户通知。

当我按下上传按钮时,上传的准备工作就开始了。我正在设置AlertDialog并显示它。一旦物理上传开始,我就会使用相同的AlertDialog,但会更改其中的消息以显示上传的进度。

*****现在问题如下******当我设置AlertDialog并调用Show方法时,它不会显示AlertDialog。但一旦上传开始并更新进度,我只需调用setMessage方法,此时就会出现AlertDialog。

相关代码如下:

子按钮.setOnClickLictener位于onViewCreated((中

submitbutton.setOnClickListener {
requireActivity().runOnUiThread {
SubmitAd()
}
}

我在这里尝试过在UIThread上运行SubmitAdd((,如果它有帮助的话,但没有它也是一样的。

SubmitAd显示对话框。(实际上,在这一点上什么都没有显示。

fun SubmitAd() {
var addInApp: Boolean = false
ToBePurchased = 0
if (CheckCanUpload()) {
var AlertView = AlertDialog.Builder(requireActivity())
AlertView.setTitle("Hirdetés feltöltés")
AlertView.setMessage("A feltöltés előkészítése hosszabb ideig is eltarhat, kérjük várjon!")
AlertView.setCancelable(false)
DialogToShow = AlertView.create()
DialogToShow!!.show()
purchaseLoop = 0
UploadWithPurchase()
} else {
var AlertView = AlertDialog.Builder(requireActivity())
AlertView.setTitle("Hirdetés hiba")
AlertView.setMessage("A hirdetése hiányos. Kérjük töltse ki az összes mezőt és csatoljon fotót a hirdetéséhez!")
AlertView.setPositiveButton("Ok") { dialog, which ->
dialog.dismiss()
}
DialogToShow = AlertView.create()
DialogToShow!!.show()
}
}

在UploadWithPurchase((中,Playstore的购买处理已经完成,但如果根本没有购买,它只是经过一个循环,递归地调用UploadWithPurchase(。

Webhelper返回如下进度:

override fun WebHelperProgress(id: String, progress: Float) {
if (DialogToShow != null) {
DialogToShow!!.setMessage("Feltöltés folyamatban. Kérem várjon! ... ${progress.toInt()}%")
}
}

调用此方法时,会显示AlertDialog。

无论我尝试了什么,都无济于事。AlertDialog在第一次通话时没有显示,但不知道为什么。

稍后编辑:我已经知道AlertDialog实际上是在它从递归循环中出来后出现的,但我不知道如何在它开始循环之前强制显示它。我的目的是通知用户一个更长的过程正在开始。启动流程毫无意义,用户也不知道发生了什么。

最后,我可以通过将purchaseRoop放入这样一个单独的线程来解决它。

fun SubmitAd() {
var addInApp: Boolean = false
ToBePurchased = 0
if (CheckCanUpload()) {
var AlertView = AlertDialog.Builder(requireActivity())
AlertView.setTitle("Hirdetés feltöltés")
AlertView.setMessage("A feltöltés előkészítése hosszabb ideig is eltarhat, kérjük várjon!")
AlertView.setCancelable(false)
DialogToShow = AlertView.create()
DialogToShow!!.show()
purchaseLoop = 0
******** SOLUTION HERE ********
Thread {
UploadWithPurchase()
}.start()
*******************************
} else {
var AlertView = AlertDialog.Builder(requireActivity())
AlertView.setTitle("Hirdetés hiba")
AlertView.setMessage("A hirdetése hiányos. Kérjük töltse ki az összes mezőt és csatoljon fotót a hirdetéséhez!")
AlertView.setPositiveButton("Ok") { dialog, which ->
dialog.dismiss()
}
DialogToShow = AlertView.create()
DialogToShow!!.show()
}

}

相关内容

最新更新