Java 用特定时间初始化计时器
我的时间以秒为单位 (例如秒=2796) 所以我想让我的计时器从46分36秒开始 我试着这样做:Java 用特定时间初始化计时器,java,android,chronometer,Java,Android,Chronometer,我的时间以秒为单位 (例如秒=2796) 所以我想让我的计时器从46分36秒开始 我试着这样做: chronometer.setBase(myMillis); long seconds =2796; long stoptime_millis = seconds * 1000; long elapsedMillis = SystemClock.elapsedRealtime() - stoptime_millis; customChronometer.setBase(elapsedMillis
chronometer.setBase(myMillis);
long seconds =2796;
long stoptime_millis = seconds * 1000;
long elapsedMillis = SystemClock.elapsedRealtime() - stoptime_millis;
customChronometer.setBase(elapsedMillis);
customChronometer.start();
但它不起作用。用这个密码,我的计时在00:00开始 我尝试了几种方法,但似乎没有任何帮助 比如这个 这是我的计时器
public class CustomChronometer extends Chronometer {
public int msElapsed;
public boolean isRunning = false;
public CustomChronometer(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomChronometer(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public CustomChronometer(Context context) {
super(context);
}
public int getMsElapsed() {
return msElapsed;
}
public void setMsElapsed(int ms) {
setBase(getBase() - ms);
msElapsed = ms;
}
@Override
public void start() {
super.start();
setBase(SystemClock.elapsedRealtime() - msElapsed);
isRunning = true;
}
@Override
public void stop() {
super.stop();
if (isRunning) {
msElapsed = (int) (SystemClock.elapsedRealtime() - this.getBase());
}
isRunning = false;
}
}
调用start()方法时,再次调用setBase。你的MSEFASED很可能是0,因此你总是重置你的基地。通过这种方式,customChronometer.setBase(elapsedMillis);正在被忽视
因此,请按如下方式更改代码:
@Override public void start() {
super.start();
//setBase(SystemClock.elapsedRealtime() - msElapsed); - remove this line.
isRunning = true;
}
调用start()方法时,再次调用setBase。你的MSEFASED很可能是0,因此你总是重置你的基地。通过这种方式,customChronometer.setBase(elapsedMillis);正在被忽略。是的@LeandroBorgesFerreira没错。这是正确的答案。你救了我一天不客气。我只是把我的评论作为回答。如果你能接受这一正确答案,我将不胜感激。
@Override public void start() {
super.start();
//setBase(SystemClock.elapsedRealtime() - msElapsed); - remove this line.
isRunning = true;
}