首页 > 解决方案 > 如何一一显示几个进度条?

问题描述

我必须做这样的事情:

我在 for 循环中显示进度对话框时遇到问题。

我尝试了 TimerTask 的许多变体并运行。这是我最新的示例演示应用程序代码。

//In function of showing progress
for (int i = 0; i < myInfo.size() ; i++){
    Timer timer = new Timer();
    timer.scheduleAtFixedRate(new ProgressTask(timer), 1000, 1000);
}

//Here is the ProgressTask
public class ProgressTask extends TimerTask {
    Timer timer;
    public ProgressTask (Timer timer){
        this.timer = timer;
    }

    @Override
    public void run() {
        progressStatus = progressStatus + 10;
        progressBar.setProgress(progressStatus);
        if (progressStatus == 100) {
            timer.cancel();
        }
    }
}

结果是:我只看到第一条记录的进度对话框。尽管它为所有记录执行循环,但我在调度任务或运行线程或计时器时犯了一些错误。有人可以帮我解决我的代码中的错误吗?

编辑:

如果有帮助,这是整个 Activity 的代码。

标签: androidandroid-progressbartimertask

解决方案


Your progresstask executed simultaneously so you get only one progress. So adjust your delay to execute one by one.

Try this

 for (int i = 0; i < 10 ; i++){
        Timer timer = new Timer();
        timer.scheduleAtFixedRate(new ProgressTask(timer),  i * 1000, 1000);
    }

 public class ProgressTask extends TimerTask {
    Timer timer;
    public ProgressTask (Timer timer){
        this.timer = timer;
    }

    @Override
    public void run() {

        progressStatus = progressStatus + 10;
        progressBar.setProgress(progressStatus);
        timer.cancel(); //Cancel timer all time bcoz you create new timer everytime.

    }

} 

推荐阅读