我之前使用setProgress()
方法来更新进度,但现在我需要显示和更新几个进程,所以我尝试使用setMessage()
进行操作。
但是,在使用setMessage()
时,我会在CalledFromWrongThreadException
更新后立即收到ProgressDialog
(就像,我看到它很快就会更新)。
这是我的onProgressUpdate
方法:
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
// progressdialog.setProgress(values[0]);
Log.v("PDMessage", "Cycle: " + values[1] + "/" + values[2] + "\n" + "Progress: " + values[0] + "%");
progressdialog.setMessage("Cycle: " + values[1] + "/" + values[2] + "\n" + "Progress: " + values[0] + "%");
// updateProgressBar(values[0]);
}
LogCat向我展示了具有正确值的预期输出,因此没有问题。
有人可以向我解释这里的区别吗?
我知道如何解决它(并且那里已有答案)但我不知道为什么setProgress()
不要求我这样做。
答案 0 :(得分:1)
尝试这样,
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
// progressdialog.setProgress(values[0]);
Log.v("PDMessage", "Cycle: " + values[1] + "/" + values[2] + "\n" + "Progress: " + values[0] + "%");
runOnUiThread(new Runnable() {
@Override
public void run() {
progressdialog.setMessage("Cycle: " + values[1] + "/" + values[2] + "\n" + "Progress: " + values[0] + "%");
}
}
});