提问者:小点点

ProgressDialog只显示一次,然后不再工作


我正在开发一个处理图像的kotlin应用程序。 在图像处理步骤上的每个用户交互中,我添加了一个progressDialog,以便向用户提供正在进行的操作的可视化响应,但是它只显示在第一个过程中。 到了第二个以后,即使它已经不在那个处理步骤了,它仍然没有显示出进展。 我已经切换到ProgressBar,错误仍然存在。 有人能给我解释一下原因和解决办法吗?

代码:

private fun regionBackground() {

    progressDialog = ProgressDialog(this, R.style.MyDialogTheme)
    progressDialog.setMessage( "Salved draw...") //First Progress
    progressDialog.setCancelable(false)
    progressDialog.show()
    srcOriginal = Imgcodecs.imread(currentPhotoPath)
    markers = Mat.zeros(srcOriginal.rows(), srcOriginal.cols(), CvType.CV_32S)
    for (value in 0..drawingview.pointsToDrawX.size - 1) {
        markers.put(
            drawingview.pointsToDrawY[value].toInt(),
            drawingview.pointsToDrawX[value].toInt(),
            1.0
        )
    }
    drawingview.pointsToDrawYStepTwo.clear()
    drawingview.pointsToDrawXStepTwo.clear()
    Handler().postDelayed({
        progressDialog.dismiss()        }, 1000)

}

private fun regionOfInterest() {
    progressDialog = ProgressDialog(this, R.style.MyDialogTheme)
    progressDialog.setMessage( "Segment image...")
    progressDialog.setCancelable(false)
    progressDialog.show()
    for (value in 0..drawingview.pointsToDrawXStepTwo.size - 1) {
        markers.put(
            drawingview.pointsToDrawYStepTwo[value].toInt(),
            drawingview.pointsToDrawXStepTwo[value].toInt(),
            255.0
        )
    }
    ....
    progressDialog.dismiss()
    }

共1个答案

匿名用户

向我们显示调用这些函数的顺序会很有用。 我认为可能的原因是在调用第二个ProgressDialog.Show()之后调用第一个ProgressDialog.Dismiss()。 因此在它完成之前,它太快地将其删除(并且它看起来好像没有被调用)。

你能试着调试看看这不会使事情出错(顺序)吗? 我知道它们是不同的对象,但有一次我有一个类似的错误。

希望有帮助。