gpt4 book ai didi

java - 如何更改进度对话框文本

转载 作者:行者123 更新时间:2023-12-02 11:44:48 24 4
gpt4 key购买 nike

我有一个 asynctask 但如果我实现 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) 并使用 onProgressUpdate。了解有关 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]);
}
}

关于java - 如何更改进度对话框文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48287540/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com