- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
新手寻求帮助~
我有一个带有开始、暂停和重置按钮的倒计时器。当计时器运行时,我希望能够点击重置按钮以从原始值(edittext)重新启动它。目前,我能够完成此操作的唯一方法是点击“暂停”然后“重置”。
举一个我希望完成的例子:
如果定时器设置为10秒,10-9-8-重置-10-9-8-7-6-5-重置-10-9....
提前致谢!
我浏览了论坛和 Android 开发网站
编辑:原来的问题解决了,但又出现了另一个问题。下面的代码显示了所做的更改。如果我太快地按下开始-暂停-开始,原始倒计时时间就会增加一秒。例如:15-14-pause-start-15-pause-start-16-pause-start-17-pause-start-18
private void pauseTimer(boolean actualPause) {
mCountdowntimer.cancel();
mTimerRunning = false;
if(actualPause)
updateWatchInterface();
}
private void resetTimer() {
if(mTimerRunning)
pauseTimer(false);
mTimeLeftInMillis = mStartTimeInMillis;
updateCountDownText();
updateWatchInterface();
}
最佳答案
我不确定您的确切问题是什么,所以我会提到几种方法。
选项 1:如果您记住“开始时间”(这就是 mStartTimeInMillis 所表示的,对吧?)没有任何问题,那么您可以简单地更改函数pauseTimer 的签名,如下所示:
private void pauseTimer(boolean actualPause) {
mCountdowntimer.cancel();
mTimerRunning = false;
if(actualPause)
updateWatchInterface();
}
private void resetTimer() {
if(mTimerRunning)
pauseTimer(false);
mTimeLeftInMillis = mStartTimeInMillis;
updateCountDownText();
updateWatchInterface();
}
还将顶部部分修改为:
public void onClick(android.view.View view) {
if (mTimerRunning) {
pauseTimer(true);
}
//...Other code
}
这将确保当您按下重置按钮时 watch 界面不会更新以显示暂停的界面,但实际工作就像您先按下暂停然后重置一样。此外,我们还进行了检查,以确保如果暂停计时器实际上是暂停然后重置,则不会调用它。
选项2:如果不先调用pause就无法获取mStartTimeInMillis的引用,您可以使用SharedPreferences,并在每次启动计时器时保存开始时间,从而允许您按如下方式访问该变量:
//Put
SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit();
editor.putString("time", *Your_value* );
editor.apply();
//Get
SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
String name = prefs.getString("time", "00:00");//"00:00" is the default value if the //entry doesn't exist.
我希望这些会有所帮助:)
关于java - 如何重置 CountDownTimer 而不必先暂停,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57549887/
我是一名优秀的程序员,十分优秀!