2011-11-11 2 views
2

나는 CountDownTimer를 확장 내 자신의 클래스를 만들었습니다. 자주 사용하기 때문에 그 클래스를 자체 java 파일에 갖고 싶습니다.안드로이드 CountDownTimer 별도의 클래스로

그러나 타이머 클래스가 생성 한 클래스와 통신 할 수있는 방법을 모르겠습니다.

예 : 클래스 A에는 몇 초 동안 표시되는 textView가 있습니다. 따라서 클래스 A는 타이머를 생성합니다.

  • 어떻게 onTick()가 CountDownTimer의 방법은 현재 시간 내 텍스트 뷰를 업데이트 할 말 할 수 있는가?
  • 수업이 끝나면 수업 A는 어떻게 알 수 있습니까?

확실한 답변이지만 스레드, 처리기, 리스너 및 기타 마법사가 요리하는 내용은 거의 알지 못합니다.

답변

1

이 정기적 카운트 다운 타이머를 사용하여 매우 유사해야합니다를 구현합니다. 또한 액티비티를 생성자로 전달하여 디스플레이를 업데이트하는 데 필요한 모든 작업을 수행 할 수 있습니다.

예. MyCountownTime이 같은 방법이있을 것입니다

mCountDownTimer = MyCountDownTimer(totalMsecs, callInterval, this).start(); 

는 :

 public void onTick(long millisUntilFinished) { 

      float fraction = millisUntilFinished/(float) totalMsecs; 

         // myActivity is passed in the constructor 
      mMillisUntilFinished = millisUntilFinished; 

      // progress bar is based on scale of 1 to 100; 
      mActivity.progressBar.setProgress((int) (fraction * 100)); 

     } 

     public void onFinish() { 
       mMillisUntilFinished = 0; 
      handleTimeOut(); 
     } 

이 mActivity 생성자에 전달되는 가정합니다. 호출하는 액티비티가 타이머 생성자의 변수로 전달되고 타이머 클래스의 멤버로 설정되었다고 가정하여 코드를 변경했습니다.

+0

좋아, 네가 무슨 말하는지 알 겠어. 이제 타이머가 끝나면 호출하는 클래스에있는 메소드를 어떻게 호출 할 수 있습니까? – Allen

+0

어떤 아이디어? 전달 된 활동의 변수에 액세스 할 수 있지만 해당 활동에 속한 메소드는 어떻게 호출 할 수 있습니까? – Allen

+0

@Allen 혹시이 방법을 알아 냈습니까? –

0

당신 수 : 그것을합니다 (TextView이 업데이트하거나하는 것처럼 전체 활동)에있는

  1. 패스 변수
  2. 가 (직접 액세스 할 수있는 타이머 클래스) 그것을 정적을 사용하여 클래스의 변수를 확인 다만 일반 타이머 예를 들어, 서브 클래스를 대체 -
  3. 는 콜백 메커니즘
관련 문제