【发布时间】:2013-06-01 00:00:43
【问题描述】:
我正在尝试实现一个 CountDownTimer 来发布可视文本倒计时,直到我到达 0,然后发送特定消息。一切正常,直到我达到 3 秒,它调用了我的 done() 方法两次;一次还剩 3 秒,一次在计数器完成时。
我确信调用 done() 的唯一时间是调用此 CountDownTimer() 中的 onFinish() 时。我不知道为什么它会调用两次,而且总是在同一时间。
我的 Java 代码:
mainCounter = new CountDownTimer(30000, 1000){
@Override
public void onTick(long millisUntilDone){
int hours = (int) (millisUntilDone/3600000);
int mins = 0, secs = 0;
long timeLeft = millisUntilDone % 3600000;
if((int)timeLeft != 0){
mins = (int) (timeLeft/60000);
}
long timeLeftStill = timeLeft % 60000;
if((int)timeLeftStill != 0){
secs = (int) (timeLeftStill/1000);
}
((TextView)findViewById(R.id.timer_label)).setText("You have " + hours + " hours, " + mins + " mins, " + secs + " secs left");
}
@Override
public void onFinish() {
// Send Message, Out of Time
((TextView)findViewById(R.id.timer_label)).setText("MESSAGE!");
num++;
done(); //My Own Method
this.cancel();
}
}.start();
我有另一个可以完美运行的计数器,我已将其注释掉以确保它不会影响此计数器,就像我说的那样,这个计数器可以正常工作,直到我还剩 3 秒。
【问题讨论】:
-
Trail.java 文件中的
178行是什么?你的应用程序中有一些 GPS 的东西吗?为什么要拨打OnLocationChange? -
第 178 行是另一个 ((TextView)findViewById(R.id.locat_label)).setText("Other message!");我打算在它说是第 100 行的地方添加 LogCat,但不小心添加了它被注释掉的地方。是的,我正在以速度工作。
-
如果不是您想要显示的,请添加正确的。
-
已修复,字面意思是完全相同的,只是第 100 行而不是第 178 行
-
好的。谢谢 :)。只是好奇你为什么要覆盖这些方法?
标签: java android nullpointerexception textview findviewbyid