android - 如何一一显示几个进度条?
问题描述
我必须做这样的事情:
- 在数组列表的几条记录之间迭代。
- 显示一条记录的进度对话框
- 移动到下一条记录
- 等等。
我在 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 的代码。
解决方案
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.
}
}
推荐阅读
- terraform - terraform 无法创建 eks_node 组
- python - 如何通过查询集(逐个对象)获取每个对象的总和
- c - 子进程中的命名信号量让我感到困惑
- excel - 为什么使用简单的 VBA 时会出现运行时错误“1004”?
- java - Emacs java缩进一个空格
- azure-devops - WorkItemMigrationConfig 处理器错误
- c# - 如何使用 LDAP 查询不同服务器上的 Active Directory
- node.js - 是否有为 express().listen() 保留的类型,如果没有,Typescript 可以从函数的返回值中提取它吗?
- arrays - TypeError: int() 参数必须是字符串、类似字节的对象或数字,而不是“映射”
- java - JAVA 和字节数组