问题描述
我正在尝试添加countDownTimer,这是可行的(只要curTime
在endTime
之前),我确实收到了“完成”消息。我的目标是完成后想重新启动计时器。如果我将counter.start();
注释掉,它将崩溃:Attempt to invoke virtual method 'android.os.CountDownTimer android.os.CountDownTimer.start()' on a null object reference
有什么建议吗?
public void loadCountDownTodaysLikes() {
SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
String curTime = SharedPrefManager.getCurTime();
String endTime = "21:01:20";
Date curTimeD,endTimeD;
try {
curTimeD = formatter.parse(curTime);
endTimeD = formatter.parse(endTime);
long curLong = curTimeD.getTime();
long endLong = endTimeD.getTime();
diff = endLong - curLong;
} catch (ParseException e) {
e.printstacktrace();
}
counter = new CountDownTimer(diff,1000) {
public void onTick(long millisUntilFinished) {
long millis = millisUntilFinished;
String hms =
(TimeUnit.MILLISECONDS.toHours(millis) - TimeUnit.DAYS.toHours(TimeUnit.MILLISECONDS.toDays(millis)) + " : ")
+ (TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)) + " : "
+ (TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis))));
countDownTodays.setText("Resetting in: " + hms);
}
public void onFinish() {
countDownTodays.setText("finished!");
//counter.start();
}
}
.start();
}
解决方法
它对我有用,我不得不做一些编辑,因为我假设您的变量是什么。您是否可以:
String curTime = SharedPrefManager.getCurTime();
是问题吗?我没有在示例中进行设置,因为我不知道它在您的身边看起来如何,我只是使用了:
String curTime = "21:01:15";
每次都会重置计时器。尝试记录您的curTime,看看是否能按预期将其恢复。使用Log.i("CurTime",curTime);
希望这对您有所帮助!