代码:
public class SMH extends Activity { public void onCreate(Bundle b) { super.onCreate(b); setContentView(R.layout.main); TextView tv = (TextView) findViewById(R.id.tv); new CountDownTimer(10000, 2000) { public void onTick(long m) { long sec = m/1000+1; tv.append(sec+" seconds remain\n"); } public void onFinish() { tv.append("Done!"); } }.start(); }
输出:
还剩 10 秒
还剩 8 秒
还剩 6 秒
还剩 4 秒
完毕!
问题:
我如何让它显示“ _还剩 2 秒_”?经过的时间确实是 10 秒,但最后一次 onTick() 永远不会发生。如果我将第二个参数从 2000 更改为 1000,则输出如下:
还剩 10 秒
还剩 9 秒
还剩 8 秒
还剩 7 秒
还剩 6 秒
还剩 5 秒
还剩 4 秒
还剩 3 秒
还剩 2 秒
完毕!
所以你看,它似乎跳过了最后一个 onTick() 调用。顺便说一句,XML 文件基本上是默认的 main.xml,其中 TextView 分配了 id tv 并且文本设置为“”。
原文由 ProgrammingMakesMeQQ 发布,翻译遵循 CC BY-SA 4.0 许可协议
我不知道为什么最后一个滴答声不起作用,但您可以使用 Runable 创建自己的计时器,例如。
并开始它,
编辑高飞的问题
你应该有一个变量来保存计数器状态(布尔值)。然后你可以像 Start() 一样写一个 Stop() 方法。
GOOFY 问题的 EDIT-2
实际上停止计数器没有错误,但在停止(恢复)后再次启动时有错误。
我正在编写一个新的更新的完整代码,我刚刚尝试过并且它正在运行。这是一个基本的计数器,在屏幕上显示时间,带有开始和停止按钮。
计数器类
活动课
主.xml