2012-03-03 2 views
0

를 다시 시작 이것은 현재 모습입니다 :는 카운트 다운 시계

final CountDownTimer countdown = new CountDownTimer(5000, 1000) { 

    public void onTick(long millisUntilFinished) { 
     clock.setText("Seconds Remaining: " + millisUntilFinished/1000); 
    } 

    public void onFinish() { 
     qcount++; 

     if (qcount < 10) 
     { 
      this.start(); 
      switch (diff) { 

      case 0: //Novice difficulty 

을하지만 카운트 다운 변수가 사용되지 않고는 응용 프로그램에서 전혀 실행되지 않습니다 말한다.

+0

A) 변수가 대문자로 시작하지 않음 B) 만들고있는 것을 재귀 적으로 참조하려고합니다. 실제로 이것이 초기화되지 않았다고 말하는 이유입니다. –

+0

그래서 내가 처음부터 한 번 만들어야한다고 말하는 것을 이해한다면? 카운트 다운 선언은 어떻게 보이나요? – nexus490

답변

1

인스턴스를 생성 할 익명 클래스에서 카운트 다운을 사용하려고합니다. Countdown은 해당 클래스의 인스턴스이며 onFinish()가 해당 인스턴스에서 호출됩니다.

onFinish()가 호출 된 인스턴스에서 start()를 호출해야하므로 'this'를 사용하십시오.

this.start(); 

편집 : 당신은 단순히 기본적으로 당신이 무슨 일을하는지하는 새로운 클래스를 만드는 것처럼 그것 봐. 새 클래스 정의에서 "카운트 다운"은 변수가 아니므로 사용할 수 없습니다. 당신은 onFinish()가 호출 된 객체에서 start를 호출하기 만하면됩니다. 그러나 익명 클래스를 사용하고 있기 때문에 익명 클래스에서 외부 클래스의 변수에 액세스 할 수 있습니다.이 경우 익명 클래스는 혼동과 오류를 유발합니다.

+0

내가 따라갈 지 모르겠다. 정교 할 수 있니? – nexus490

+0

나는 this.start(); onFinish 메서드 내에서 이제는 카운트 다운 변수가 사용되지 않고 타이머가 실행되지 않을 때 타이머가 실행되지 않는다는 것을 알려줍니다. – nexus490

+0

이벤트 핸들러를 사용하지 않는 한 onTick (long mil) 및 onFinish() 메서드는 전화 받기. 정확히 무엇이 잘못되었는지를 결정하는 데 충분한 정보가 예제 코드에 없습니다. – 13Tazer31