0

さて、私はカウントダウン タイマーを持っています。私のアプリでは、ユーザーがボタンを何度もタップする必要がありますが、そのボタンをタップするとタイマーが開始されます。私の問題は次のとおりです。

ボタンを押すと開始する 10 秒のカウントダウン タイマーがありますが、ユーザーがボタンをタップするたびに 0 まで継続するのではなく、10 で再開します。ユーザーが最初にタップしたときにカウントダウンし続けるようにするにはどうすればよいですか?

私のコード:

private Button tapBtn;
TextView cm;

tapBtn = (Button) findViewById(R.id.Tap);
cm = (TextView) findViewById(R.id.Timer);

final CountDownTimer aCounter = new CountDownTimer(10000, 1000) {

         public void onTick(long millisUntilFinished) {
            cm.setText("Time Left: " + millisUntilFinished / 1000);
         }

         public void onFinish() {
             cm.setText("Time's Up!");
         }
      };
      aCounter.cancel();

tapBtn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            scr = scr - 1;
            TextView Score = (TextView) findViewById(R.id.Score);
            Score.setText(String.valueOf(scr));
            aCounter.start();
        }
    });
}
4

2 に答える 2

1

ユーザーがすでにタイマーを開始している場合、その後のボタンを押しても最初のタップから再開しないようにしようとしていますか? その場合、タイマーがまだカウントダウンしているかどうかを確認する if ステートメントを onclick に入れるだけです。つまり、現在の時間がカウンターで 0 より大きいかどうかを確認します。

編集:これがコードです

final CountDownTimer aCounter = new CountDownTimer(10000, 1000) {

         private long timeLeft;

         public long getTimeLeft() {
            return timeLeft;
         }

         public void onTick(long millisUntilFinished) {
            timeLeft = millisUntilFinished / 1000;

            cm.setText("Time Left: " + timeLeft);

         }

         public void onFinish() {
             cm.setText("Time's Up!");
         }
      };
      aCounter.cancel();

tapBtn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            if (aCounter.getTimeLeft() == 0) {
               scr = scr - 1;
               TextView Score = (TextView) findViewById(R.id.Score);
               Score.setText(String.valueOf(scr));
               aCounter.start();
            }
        }
    });
}
于 2012-08-17T20:04:19.530 に答える
0

これを行う 1 つの方法は、最初のタップで設定されるフラグを作成し、onclick イベントで最初のクリックでフラグを反転させ、フラグが設定されていない場合にのみ発生する if ステートメント内にタイマーの開始を配置することです。設定。

于 2012-08-17T20:05:24.980 に答える