2014-05-12 54 views
0

我想创建一个活动时启动一个计时器,并能够从零重置计时器,如果按下相同的按钮,但每次按下启动设置时间间隔的按钮时,它似乎都会创建一个新的时间间隔而不是重置已经创建的那个。有人可以帮忙吗?这里是我的代码如何在计时器完成时重置计时器值?

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(); 

回答

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); 
} 
+0

但我有一个指定的时间为countDownTimer我怎么能实现这一点,并作为我的问题如何停止和重置计时器完成之间的计时器值和重置计时器的值。你现在可以帮我@alp –

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

} 
+0

但它不工作它生成一个新的计时器与不同的价值,我已经删除,但它不工作 –

+0

让我检查我会让你知道 –

+0

但@helleye,因为我问过的问题是,我要使用按钮单击完成定时器之前,要从零开始重新启动它。请考虑一下,感谢您的帮助,但不是我的问题“您提供给我的解决方案” –