0

クロノメーターを持っていますが、アクティビティの開始からではなく、ユーザーがボタンをクリックしたときからカウントを開始したいと思います。現在、ユーザーがボタンをクリックしてタイマーを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;
        }
...

何を変更する必要がありますか?

4

2 に答える 2

1

arg0.getBaseが何であるかはわかりませんが、変更したいと思います-

countUp = (SystemClock.elapsedRealtime() - arg0.getBase()) / 1000;

countUp = (SystemClock.elapsedRealtime() - startTime) / 1000;

startTimeは、ボタンがクリックされた時刻だからです。

于 2012-12-23T05:09:16.510 に答える
-1

あなたは付け加えられます

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

お役に立てれば..

于 2017-07-14T18:13:29.043 に答える