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

标签 java android android-asynctask progressdialog

我有一个 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/

相关文章:

java - 在Android中获取用户的日常路线?

java - httpclient 无法处理 URL 重定向?

android - 多个 LocationClients 干扰?

安卓严格模式

android - 使用 AsyncTask 和 Jsoup 发布 APK 时出错

java - 如何获取Mysql数据库中的所有行(Java)

java - 通过递归确定嵌套括号(JAVA)

android - 无法识别 Flutter Android 支持库

android - Skype For Business 在 Android 上的对话中不显示 HTML

android - JSON异常 : End of input at character 0