2017-05-07 48 views
0

我想要創建從5秒開始的倒數計時器,並按下按鈕,當前時間增加3秒。 我用一個處理程序來處理倒數計時器,我知道我們不能使用CountdownTimer。 這裏是我的代碼:給處理程序添加3秒

Handler handler = new Handler(); 
int delay = 1000; 
r = new Runnable() { 
        @Override 
        public void run() { 

         int timeOut = finalTime - 1; 
         String printedTime = Integer.toString(timeOut); 
         timer.setText(printedTime); 
         handler.postDelayed(this,delay); 
       }; 

我更新,這是簡單的方法正確的代碼:

timer = (TextView) findViewById(R.id.timer); 
    addSecs = (Button) findViewById(R.id.addSecs); 

    final Handler handler = new Handler(); 
    handler.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      currentTime = timer.getText().toString(); 
      time = Integer.parseInt(currentTime); 
      time-=1; 
      updateTime = Integer.toString(time); 
      timer.setText(updateTime); 
      handler.postDelayed(this,1000); 
     } 
    },1000); 

    addSecs.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      currentTime = timer.getText().toString(); 
      time = Integer.parseInt(currentTime); 
      time+=3; 
      updateTime = Integer.toString(time); 
      timer.setText(updateTime); 
     } 
    }); 
+0

我假設'timeOut'和'finalTime'以秒爲單位?只需在你的按鈕onClick(View v)'事件 – Carpetfizz

+0

@Carpetfizz上增加'finalTime + = 3'即可。我錯過了onClick。 Thanx aloooooot ... – rexo

回答

0

使用可以根據自己的邏輯計時器

使用CountDownTimer

下面的代碼更改

1st param是以毫秒爲單位的起始定時器,
第2個參數是count切斷區間

new CountDownTimer(5000, 1000) { 
    @Override 
    public void onTick(long millisUntilFinished) { 
     //5 ,4 , 3, 2, 1 
     Log.d(TAG,"starting nuclear in " + (millisUntilFinished/1000)); 
    } 
    @Override 
    public void onFinish() { 
     //finish code 
    } 

}.start(); 

如果你想使用處理器

timeOut = 5; 
private Runnable runnable = new Runnable() { 
    @Override 
    public void run() { 
     /* do what you need to do */ 
     Log.d(TAG,"starting nuclear in " + timeOut--); 
     /* and here comes the "trick" */ 
     if(timeOut > 0) 
      handler.postDelayed(this, 1000); 
    } 
}; 

private Handler handler = new Handler(); 
handler.postDelayed(runnable, 1000);