2011-12-16 87 views
4

我做,並顯示一個時鐘倒計時這段代碼如何在黑莓手機上顯示整個應用程序的時鐘數?

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。你能幫我嗎? – 2011-12-16 09:16:24

+1

來聊天室現在你有權限。「黑莓和Java的知識共享中心」 – alishaik786 2011-12-16 09:37:44

回答

1

這是不可能的一個UI fieldmanager增加爲兩個manager S或screen秒。每一個UI fieldmanager,最多隻能有一個父(screenmanager)。

所以如果你需要一個LabelField將舉行和時間顯示在不同的screen S,那麼你只需要實現某種監聽器將監聽的時間更改的..和每一個變化,你必須更新screen和具有新值的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類每更改一次更新事件。爲此,您必須通過MyTimerUtil類的setTimerListener()來設置ScreeA(它實現TimerListener)的實例。

還需要通過調用startTimer()方法啓動計時器。

相關問題