Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在计时器完成的同时重置计时器值?_Java_Android_Timer_Counter_Countdown - Fatal编程技术网

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

Java 如何在计时器完成的同时重置计时器值?,java,android,timer,counter,countdown,Java,Android,Timer,Counter,Countdown,我试图在创建活动时启动计时器,如果按下同一按钮,则能够将计时器从零重置,但每次按下启动设置间隔的按钮时,它似乎在创建新间隔,而不是重置已创建的间隔。有人能帮忙吗?这是我的密码 timer = (TextView) findViewById(R.id.timer_value); Count = new CountDownTimer(time, 1000) { public void onTick(long millisUntilFinished) {

我试图在创建活动时启动计时器,如果按下同一按钮,则能够将计时器从零重置,但每次按下启动设置间隔的按钮时,它似乎在创建新间隔,而不是重置已创建的间隔。有人能帮忙吗?这是我的密码

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();
timer=(TextView)findViewById(R.id.timer\u值);
计数=新的倒计时(时间,1000){
公共void onTick(长毫秒未完成){
timer.setText(“剩余时间:+millisuntillfinished/1000”);
}
公共无效onFinish(){
timer.setText(“超时!”);
如果(时间<10000){
时间=10000;
}
AlertDialog.Builder=新建AlertDialog.Builder(
蒂克塔克托;
setMessage(“您超时了”).setPositiveButton(
“Replay”,新的DialogInterface.OnClickListener(){
public void onClick(DialogInterface对话框,int-id){
//重置游戏环境。
Count.onFinish();
//Count.cancel();
Count.start();
新游戏(玩家名称1);
}
});
AlertDialog alert=builder.create();
alert.show();
}
}.start();
您可以使用计时器

//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);
}

如果要重新启动计时器,请删除
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();
    }

}
公共类MainActivity扩展活动
{
整数时间=10000;
倒计时计数;
@凌驾
创建时受保护的void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
最终文本视图计时器=(文本视图)findViewById(R.id.timer);
计数=新的倒计时(时间,1000){
公共void onTick(长毫秒未完成){
timer.setText(“剩余时间:+millisuntillfinished/1000”);
}
公共无效onFinish(){
timer.setText(“超时!”);
如果(时间<10000){
时间=100000;
}
}
}.start();
}
公共作废按钮勾选(查看)
{
Log.i(“计时器”、“重置计时器”);
Count.cancel();
Count.start();
}
}

但我有一个指定的倒计时时间,我如何实现它,以及我的问题是如何在计时器完成和重置计时器值之间停止和重置计时器值。你现在能帮我吗@alp但它不工作它生成了一个不同值的新计时器,我已经删除了,但它不工作让我检查我会让你知道的,但是@helleye正如我所问的问题是,我想在完成计时器之前使用按钮点击从零重新启动它。请考虑一下,谢谢你的帮助,但这不是我的问题,“你为我提供的解决方案”你所说的“从零重新启动”是什么意思?如果它开始倒计时,比如10,9,8。。在那个时候,如果你按下一个按钮,把它设置为0,停止计数,或者“从零开始重新开始”意味着定义的值,对我来说是10