【发布时间】:2014-10-31 13:00:00
【问题描述】:
我之前使用setProgress() 方法来更新进度,但现在有几个进度需要显示和更新,所以我尝试使用setMessage() 来完成。
但是,当使用 setMessage() 时,我会在 ProgressDialog 更新后立即收到 CalledFromWrongThreadException(就像,我看到它很快就会更新)。
这是我的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() 不要求我这样做。
【问题讨论】:
-
尝试在 runOnUiThread() 中编写 setMessage() 代码。
-
是的,我已经读过它,但我想知道,为什么我必须使用
setMessage()而不是setProgress()。 -
仍在寻找答案。提醒一下,我不需要代码。这只是我想了解的。
-
检查 AsyncTask 各种改变进度值的方法:developer.android.com/reference/android/os/…
标签: android android-asynctask progressdialog