我正在开发一个处理图像的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()
}
向我们显示调用这些函数的顺序会很有用。 我认为可能的原因是在调用第二个ProgressDialog.Show()之后调用第一个ProgressDialog.Dismiss()。 因此在它完成之前,它太快地将其删除(并且它看起来好像没有被调用)。
你能试着调试看看这不会使事情出错(顺序)吗? 我知道它们是不同的对象,但有一次我有一个类似的错误。
希望有帮助。