我知道这很容易做到,但是我试图从这里拿一些例子而不是显示progressDialog。我想要做的是在单击按钮时显示ProgressDialog并在任务完成时完成:
提前致谢!
buttonStartOCR.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
progress = ProgressDialog.show(SimpleAndroidORCActivity.this, "Processing", "Please wait...", true);
new Thread(new Runnable() {
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
onPhotoTaken();
}
});
};
}).start();
progress.dismiss();
}
});
答案 0 :(得分:1)
你的ProgressDialog正在展示,但在演出结束后立即被解雇。将你的dismiss置于runnable的run方法中。
这样:
buttonStartOCR.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
progress = ProgressDialog.show(SimpleAndroidORCActivity.this, "Processing", "Please wait...", true);
new Thread(new Runnable() {
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
onPhotoTaken();
progress.dismiss();
}
});
};
}).start();
}
});
答案 1 :(得分:0)
一个线程是一个独立的进程,它在后台运行你的进度条显示并立即解雇,调用progress.dismiss();在onPhotoTaken()
之后的run()中答案 2 :(得分:0)
在下面的代码中,你关闭对话框,因为它也开始运行线程,所以解雇对话框不能等待线程内部的任务。
buttonStartOCR.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
progress = ProgressDialog.show(SimpleAndroidORCActivity.this, "Processing", "Please wait...", true);
new Thread(new Runnable() {
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
onPhotoTaken();
progress.dismiss();
}
});
};
}).start();
}
});
onPhotoTaken(): - 应该返回任何值,以便我们可以解除对话。
并在主要文件中删除对话框