Android:从活动开始,而不是从点击按钮开始计时

Android:从活动开始,而不是从点击按钮开始计时,android,Android,我有一个计时器,我希望它从用户点击按钮开始计数,而不是从活动开始。当前,当用户单击按钮从0开始计时时,它只显示活动开始的时间。以下是相关代码: @Override public void onClick(View v) { switch (v.getId()) { case R.id.startTimer: { Chronometer stopWatch = (Chronometer) findViewById(R.id.chrono);

我有一个计时器,我希望它从用户点击按钮开始计数,而不是从活动开始。当前,当用户单击按钮从0开始计时时,它只显示活动开始的时间。以下是相关代码:

@Override
public void onClick(View v) {
    switch (v.getId()) {
        case R.id.startTimer: {
            Chronometer stopWatch = (Chronometer) findViewById(R.id.chrono);
            startTime = SystemClock.elapsedRealtime();

            timer = (TextView) findViewById(R.id.timerText);
            stopWatch.setOnChronometerTickListener(new OnChronometerTickListener(){
                @Override
                public void onChronometerTick(Chronometer arg0) {
                    countUp = (SystemClock.elapsedRealtime() - arg0.getBase()) / 1000;
                    String asText = (countUp / 60) + ":" + (String.format("%02d", (countUp % 60))); 
                    timer.setText(asText);
                }
            });
            stopWatch.start();
            break;
        }
...

我需要更改什么?

不确定arg0.getBase是什么,但我认为您需要更改--

因为startTime是单击按钮的时间。

您可以添加

stopWatch.setBase(startTime);
就在下面

startTime = SystemClock.elapsedRealtime();
因此,您的更新代码将类似于

@Override
public void onClick(View v) {
switch (v.getId()) {
    case R.id.startTimer: {
        Chronometer stopWatch = (Chronometer) findViewById(R.id.chrono);
        startTime = SystemClock.elapsedRealtime();

        // this line to be added to the code
         stopWatch.setBase(startTime);


        timer = (TextView) findViewById(R.id.timerText);
        stopWatch.setOnChronometerTickListener(new OnChronometerTickListener(){
            @Override
            public void onChronometerTick(Chronometer arg0) {
                countUp = (SystemClock.elapsedRealtime() - arg0.getBase()) / 1000;
                String asText = (countUp / 60) + ":" + (String.format("%02d", (countUp % 60))); 
                timer.setText(asText);
            }
        });
        stopWatch.start();
        break;
    }
...

希望这有帮助。

代码来自在线,因为我试图找出如何执行“计数”计时器,并且它可以从中工作(没有case、onclick等)。我试图调整它,使其仅在单击按钮时运行。我现在正在测试。。。
startTime = SystemClock.elapsedRealtime();
@Override
public void onClick(View v) {
switch (v.getId()) {
    case R.id.startTimer: {
        Chronometer stopWatch = (Chronometer) findViewById(R.id.chrono);
        startTime = SystemClock.elapsedRealtime();

        // this line to be added to the code
         stopWatch.setBase(startTime);


        timer = (TextView) findViewById(R.id.timerText);
        stopWatch.setOnChronometerTickListener(new OnChronometerTickListener(){
            @Override
            public void onChronometerTick(Chronometer arg0) {
                countUp = (SystemClock.elapsedRealtime() - arg0.getBase()) / 1000;
                String asText = (countUp / 60) + ":" + (String.format("%02d", (countUp % 60))); 
                timer.setText(asText);
            }
        });
        stopWatch.start();
        break;
    }
...