2013-06-29 2 views
5

나는이 같은 게시물이 있음을 알고 있지만 명확하게 질문에 대답하지 않습니다. 나는 머리를 두드려서 임의의 위치로 움직이고 점수가 +1이되는 작은 게임을 가지고있다. 한편 60000 (60 초)부터 카운트 다운되고 아래에 표시되는 타이머가 있습니다. 머리가 두드려 질 때마다 어떻게하면 타이머에 초를 추가 할 수 있습니까? 카운트 다운 타이머에 시간을 추가하는 방법은 무엇입니까?

new CountDownTimer(timer, 1) { 
    public void onTick(long millisUntilFinished) { 
     textTimer.setText("Timer " + millisUntilFinished/1000); 
    } 
    public void onFinish() { 
     Intent intent = new Intent(MainActivity.this, Gameover.class); 
     startActivity(intent); 
    } 
}.start(); 

과 onClickListner 이벤트

나는이 : 클릭에 추가 시간이 없다

timer=timer+1000; 

그것은 현재 작동하지 않는 경우에 한합니다.

도움이 될 것입니다.

+0

유일한 방법은 현재 인스턴스에서 취소를 호출하고 새 인스턴스를 생성하는 것입니다. – Blackbelt

답변

9

예약 된 타이머의 시간을 변경할 수 없습니다. 자신이하려는 일을 성취하는 유일한 방법은 타이머를 취소하고 새 타이머를 설정하는 것입니다.

public class CountdownActivity extends Activity implements OnTouchListener{ 
    CountDownTimer mCountDownTimer; 
    long countdownPeriod; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_countdown); 
     countdownPeriod = 30000; 
     createCountDownTimer(); 
    } 

    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     if (mCountDownTimer != null) 
       mCountDownTimer.cancel(); 
     createCountDownTimer(); 

     return true; 
    } 

    private void createCountDownTimer() { 
     mCountDownTimer = new CountDownTimer(countdownPeriod + 1000, 1) { 

      @Override 
      public void onTick(long millisUntilFinished) { 
        textTimer.setText("Timer " + millisUntilFinished/1000); 
       countdownPeriod=millisUntilFinished; 
      } 

      @Override 
      public void onFinish() { 
       Intent intent = new Intent(MainActivity.this, Gameover.class); 
       startActivity(intent); 
      } 
     }; 
    } 
} 
+0

OK 감사합니다. – AtomicTim

+0

일을 끝내셨습니까? –

+0

정말로 정말로 고마워요. – AtomicTim

관련 문제