2011-12-16 2 views
4

나는하게하고 클럭이 코드Blackberry에서 전체 응용 프로그램의 시계 수를 표시하는 방법은 무엇입니까?

LabelField time; 
      long mille=0; 
      Timer timer=null;TimerTask task=null; 
      public Timerscreen() { 
       mille=1000*60*1; 
       time=new LabelField(); 
       add(time); 
       timer=new Timer(); 

       task=new TimerTask() { 

        public void run() { 
         synchronized (UiApplication.getEventLock()) { 

          if(mille!=0){ 
           SimpleDateFormat date=new SimpleDateFormat("mm:ss") ; 
           System.out.println("================="+date.formatLocal(mille)+"====================="+Thread.activeCount()); 
           time.setText(date.formatLocal(mille)); 
           mille=mille-1000; 
          }else{ 
time.setText("00:00"); 
mille=1000*60*1; 
           timer.cancel(); 
           UiApplication.getUiApplication().invokeLater(new Runnable() { 
            public void run() { 
             Dialog.inform("Time expaired"); 
            } 
           }); 

          } 
         } 
        } 
       }; 
       timer.schedule(task,0, 1000); 

와 함께 카운트 다운 표시 그리고 나는 새로운 화면을 누르면이 시계는 여전히 표시하고 카운트 다운에, 나는 원한다. 어떻게하면됩니까?

+0

@HelpMeToHelpYou. 도와 줄수있으세요? –

+1

대화방에 와서 지금 권한이 있습니다. "Blackberry 및 Java 지식 공유 센터" – alishaik786

답변

1

... 모든 UI field 또는 manager이 최대 하나의 부모 (screen 또는 manager)가 있어야이 개 manager의 또는 screen들로 하나의 UI field 또는 manager를 추가 할 수 없습니다.

이 필요 그렇다면 누른 다음 만 시간 변경을 수신 할 리스너의 일종 ..를 구현해야하고 모든 변화는 screen을 업데이트해야, 다른 screen의 시간을 표시하는 LabelField 새 값으로 LabelField을 입력하십시오. 업데이트 된 데이터를 제공 할 TimerTask을 이미 구현했습니다.

-

위의 조각에
class MyTimerUtil { 
    TimerListener listener = null; 

    public MyTimerUtil() {  
    } 

    public void setTimerListener(TimerListener listener) { 
     this.listener = listener; 
    } 

    public void startTimer() { 
     final int interval = 1000; 
     Timer timer = new Timer(); 
     TimerTask task = new TimerTask() { 
      public void run() { 
       // add your codes.. 

       // notify others 
       if (listener != null) { 
        listener.timeChanged(); 
       } 
      } 
     }; 
     timer.schedule(task, 0, interval); 
    } 
} 


interface TimerListener { 
    public void timeChanged(); 
} 

class ScreeA extends MainScreen implements TimerListener { 

    public void timeChanged() { 
     // add Codes here on time changed event  
    } 
} 

, 당신은 TimerListener을 구현할 수 ... 테스트하지만 이런 일이 문제를 해결할 수 없습니다,

는 다음과 같은 코드를 확인하실 수 있습니다 [편집 나중에 추가] 인터페이스를 사용하고 모든 변경된 이벤트에 대한 업데이트를 MyTimerUtil 클래스에서 얻을 수 있습니다. 이를 위해서는 ScreeA (을 구현) 인스턴스를 setTimerListener()을 통해 MyTimerUtil 클래스로 설정해야합니다.

startTimer() 메서드를 호출하여 타이머를 시작해야합니다.

+0

"시간 변경을 수신 대기하는 일종의 수신기를 구현해야합니다." 이 작업을 수행하는 방법? 당신이 예제 코드로 이해하게 할 수 있습니까? –

+1

코드 스 니펫을 추가했습니다. 이 질문에 대한 답을 확인할 수 있습니다. – Rupak

+0

나는 시도 할 것이다. 당신의 도움을 주셔서 감사합니다 –

관련 문제