1

ボタンのクリックで開始する2つのタイマーを持つアプリがあります。

それらが開始すると、タイマーのカウントダウンがテキストビューに表示されるため、ユーザーは秒のカウントダウン (10、9、8、7 など) を確認できます。

1 つのカウンターは 45 秒のタイマーで、もう 1 つのカウンターは 30 秒のタイマーです。タイマーが開始すると、タイマーのカウントダウンが適切な秒から始まる秒を表示する(その後、1つをスキップする)45、43、42、41など)か、表示されない2つの方法のいずれかで動作することに気付きました開始値と (44、43、42、41 など) に直接ジャンプし、スキップしません。

最終的には、これらのタイマーが初期値とカウントダウンを適切に表示するようにしたいと考えています。つまり、常に最初に 45 を表示し、次に 44、43、42、41 などを表示します。

なぜこれが行われているのか、行われていないのかについて何か考えはありますか? クラスで Android CountDownTimer を使用しています。

更新: これが私の CountDownTimer のコードです

    public CountDown (long millisInFuture, long countDownInterval, Button button ) {
    super(millisInFuture, countDownInterval);
    this.button = button;
}


//Timer Countdown
@Override
public void onTick(long millisUntilFinished) {
    long timeRemaining = (millisUntilFinished/1000);
    button.setText((millisUntilFinished/1000)+"");
4

1 に答える 1

0

問題を再現しようとしましたが、できませんでした。多分あなたのコードを投稿しますか?

これが私の簡単なテストです。最初に45が表示され、次に順番にカウントダウンされ、ゼロで終了しました。

    Button b = (Button) findViewById(R.id.button1);
    final TextView tv = (TextView) findViewById(R.id.tv_1);

    b.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            new CountDownTimer(45 * 1000, 1000) {
                int x = 45;

                @Override
                public void onTick(long millisUntilFinished) {
                    tv.setText(Integer.toString(x));
                    x--;

                }

                @Override
                public void onFinish() {
                    tv.setText("0");

                }
            }.start();

        }
    });
于 2013-02-25T03:10:36.937 に答える