【问题标题】:Initialize chronometer with specific time JAVA用特定时间JAVA初始化计时器
【发布时间】:2017-01-11 08:08:29
【问题描述】:

我有这个时间在几秒钟内

(例如秒 = 2796)

long seconds =2796;
long millis = seconds * 1000;

所以我希望我的 Chronometer 从 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

我尝试了几种方法,但似乎没有任何帮助 比如这个Android Chronometer start with defined value

这是我的 CustomChronometer

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。你的 msElapsed 很可能是 0,所以你总是在重置你的 Base。这样customChronometer.setBase(elapsedMillis);被忽略了。
  • 是的@LeandroBorgesFerreira,没错。这是正确的答案。你拯救了我的一天
  • 不客气 =]。我只是发表我的评论作为答案。如果您能接受它作为正确答案,我将不胜感激。

标签: java android chronometer


【解决方案1】:

当您调用 start() 方法时,您将再次调用 setBase。你的 msElapsed 很可能是 0,所以你总是在重置你的 Base。这样customChronometer.setBase(elapsedMillis);被忽略了。

所以像这样改变你的代码:

    @Override public void start() { 
      super.start(); 
//setBase(SystemClock.elapsedRealtime() - msElapsed); - remove this line.
      isRunning = true; 
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-08
    • 1970-01-01
    • 1970-01-01
    • 2016-04-08
    • 2012-10-06
    • 1970-01-01
    相关资源
    最近更新 更多