如何更改进度对话框文本
How to change progressDialog text
我有一个异步任务,但是如果我实现了一个 Thread.Sleep,那么我的应用程序崩溃了,我不知道为什么,在 onPreExecute 中我可以看到我的第一条消息,然后两秒后它出现了我输入的另一条消息在 doInBackground 中,但它不起作用
private class sendMail extends AsyncTask<Void, Void, Void> {
protected void onPreExecute() {
dialog.setMessage("Please wait...");
dialog.show();
}
// automatically done on worker thread (separate from UI thread)
@Override
protected Void doInBackground(Void... voids) {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
dialog.setMessage("Downloading files...");
new BackgroundTask().execute();
//MY DOWNLOADING METHODS STUFF
然后我在其他地方关闭这个对话框
日志
An error occurred while executing doInBackground()
您无法从后台线程访问 UI 元素您可以在 onProgressUpdate
中更新进度条,最重要的是您需要在 doInBackground 中 publishProgress(value)
并使用 [=11= 更新].阅读有关 AsyncTask here.
的更多信息
示例代码:
class MyTask extends AsyncTask<Integer, Integer, String> {
@Override
protected String doInBackground(Integer... params) {
for (; count <= params[0]; count++) {
try {
Thread.sleep(1000);
publishProgress(count);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
return "Task Completed.";
}
@Override
protected void onPostExecute(String result) {
progressBar.setVisibility(View.GONE);
txt.setText(result);
btn.setText("Restart");
}
@Override
protected void onPreExecute() {
txt.setText("Task Starting...");
}
@Override
protected void onProgressUpdate(Integer... values) {
txt.setText("Running..."+ values[0]);
progressBar.setMessage("Downloading files...");
progressBar.setProgress(values[0]);
}
}
使用 UI 线程在 doInBackground 中显示对话框消息参考此
我有一个异步任务,但是如果我实现了一个 Thread.Sleep,那么我的应用程序崩溃了,我不知道为什么,在 onPreExecute 中我可以看到我的第一条消息,然后两秒后它出现了我输入的另一条消息在 doInBackground 中,但它不起作用
private class sendMail extends AsyncTask<Void, Void, Void> {
protected void onPreExecute() {
dialog.setMessage("Please wait...");
dialog.show();
}
// automatically done on worker thread (separate from UI thread)
@Override
protected Void doInBackground(Void... voids) {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
dialog.setMessage("Downloading files...");
new BackgroundTask().execute();
//MY DOWNLOADING METHODS STUFF
然后我在其他地方关闭这个对话框
日志
An error occurred while executing doInBackground()
您无法从后台线程访问 UI 元素您可以在 onProgressUpdate
中更新进度条,最重要的是您需要在 doInBackground 中 publishProgress(value)
并使用 [=11= 更新].阅读有关 AsyncTask here.
示例代码:
class MyTask extends AsyncTask<Integer, Integer, String> {
@Override
protected String doInBackground(Integer... params) {
for (; count <= params[0]; count++) {
try {
Thread.sleep(1000);
publishProgress(count);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
return "Task Completed.";
}
@Override
protected void onPostExecute(String result) {
progressBar.setVisibility(View.GONE);
txt.setText(result);
btn.setText("Restart");
}
@Override
protected void onPreExecute() {
txt.setText("Task Starting...");
}
@Override
protected void onProgressUpdate(Integer... values) {
txt.setText("Running..."+ values[0]);
progressBar.setMessage("Downloading files...");
progressBar.setProgress(values[0]);
}
}
使用 UI 线程在 doInBackground 中显示对话框消息参考此