Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用特定时间初始化计时器_Java_Android_Chronometer - Fatal编程技术网

Java 用特定时间初始化计时器

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

我的时间以秒为单位

(例如秒=2796)

所以我想让我的计时器从46分36秒开始

我试着这样做:

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; 
}