AlertDialog仅在Android上出现较晚(行为怪异)
我正在将数据上载到Web服务器。在我的片段上,我有一个开始上传的按钮。我试图通过一个不可取消的AlertDialog解决方案完成用户通知,这有两个阶段 当我按下上传按钮时,上传准备工作开始了。我正在设置AlertDialog并演示它。一旦物理上传开始,我将使用相同的AlertDialog,但更改其中的消息以显示上传的进度 *****现在的问题是****** 当我设置AlertDialog并调用Show方法时,它不会显示AlertDialog。但是一旦上传开始,更新进度,我就调用setMessage方法,此时会出现AlertDialog 相关代码如下所示: submitbutton.setOnClickLictener位于onViewCreated()中 我在这里尝试过在UIThread上运行SubmitAd(),如果有帮助的话,但是没有它也是一样的 SubmitAd正在显示对话框。(实际上,此时未显示任何内容AlertDialog仅在Android上出现较晚(行为怪异),android,android-alertdialog,Android,Android Alertdialog,我正在将数据上载到Web服务器。在我的片段上,我有一个开始上传的按钮。我试图通过一个不可取消的AlertDialog解决方案完成用户通知,这有两个阶段 当我按下上传按钮时,上传准备工作开始了。我正在设置AlertDialog并演示它。一旦物理上传开始,我将使用相同的AlertDialog,但更改其中的消息以显示上传的进度 *****现在的问题是****** 当我设置AlertDialog并调用Show方法时,它不会显示AlertDialog。但是一旦上传开始,更新进度,我就调用setMessag
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(),直到所有可能的购买都被选中,然后它进入真正的Upload()它调用Http请求以上载数据,并通过接口报告上载过程的进度
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从递归循环中出来后实际上会出现,但我不知道如何在它开始循环之前强制显示它。这将是我的目标,通知用户一个更长的进程正在启动。启动进程没有意义,用户不知道发生了什么g、 最后,我可以通过将purchaseLoop放到这样一个单独的线程来解决这个问题
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()
}
}
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()
}