如何在完成计时器的同时重置我的计时器值?

时间:2014-05-12 06:04:19

标签: java android timer counter countdown

我正在尝试在创建活动时启动计时器,并且如果按下相同的按钮,则能够从零重置计时器,但每次按下启动设置间隔的按钮时,它似乎创建了一个新的间隔,没有重置已经创建的那个。有人可以帮忙吗?这是我的代码

timer = (TextView) findViewById(R.id.timer_value);

Count = new CountDownTimer(time, 1000) {

        public void onTick(long millisUntilFinished) {

            timer.setText("Time Left: " + millisUntilFinished / 1000);
        }

        public void onFinish() {
            timer.setText("OUT OF TIME!");
            if (time < 10000) {
                time = 10000;
            }
            AlertDialog.Builder builder = new AlertDialog.Builder(
                    TicTacToe.this);
            builder.setMessage("You are Out of Time").setPositiveButton(
                    "Replay", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            // reset the game environment.

                            Count.onFinish();
                            // Count.cancel();
                            Count.start();
                            new_game(player_name_1);
                        }
                    });
            AlertDialog alert = builder.create();
            alert.show();

        }
    }.start();

2 个答案:

答案 0 :(得分:0)

你可以使用计时器

//in global
Timer myTimer


/**
* its kills runnable
*/
public void stopTimer(){
//handler.removeCallbacks(null); //it resets all timer which handler holds
myTimer.cancel();
}

public void setTimer(int time){//give it 5 for 5 secs
final Runnable Update = new Runnable() {

        public void run() {
            //do sth
        }
    };

    myTimer = new Timer();
    myTimerTimer.schedule(new TimerTask() {

        @Override
        public void run() {
            handler.post(Update);
        }
    }, 1000, time*1000);
}

答案 1 :(得分:0)

如果您想重新启动计时器,请删除Count.onFinish();

<强>更新
我用一个新线程替换了AlertDialog,这是在我的模拟器上运行的代码

public class MainActivity extends Activity
{
    int time = 10000;
    CountDownTimer Count;
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final TextView timer = (TextView) findViewById(R.id.timer);

        Count = new CountDownTimer(time, 1000) {

            public void onTick(long millisUntilFinished) {

                timer.setText("Time Left: " + millisUntilFinished / 1000);
            }

            public void onFinish() {
                timer.setText("OUT OF TIME!");
                if (time < 10000) {
                    time = 100000;
                }
            }
        }.start();
    }
    public void buttonClicked(View view)
    {
        Log.i("Timer", "Resetting timer");
        Count.cancel();
        Count.start();
    }

}