2011-12-16 4 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

Это не возможно добавить один пользовательский интерфейс field или managermanager в два с или screen с .. каждый пользовательский интерфейс field или manager должны иметь более одного родителя (screen или manager).

Так что, если вам нужен LabelField, который будет проводить и показывать время на разных screen с, то вам нужно только реализовать какой-то слушатель, который будет прослушивать изменения времени .. и для каждого изменения вы должны обновить 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. Для этого вам необходимо установить экземпляр ScreeA (который реализует TimerListener) через setTimerListener() класса MyTimerUtil.

Также необходимо запустить таймер, вызвав метод startTimer().

+0

«нужно реализовать какой-то слушатель, который будет слушать изменения времени». Как это сделать? Можете ли вы дать мне понять пример кода? –

+1

Я добавил фрагмент кода. Вы можете проверить это в ответе. – Rupak

+0

Я попробую. Спасибо за вашу помощь –

 Смежные вопросы

  • Нет связанных вопросов^_^