Перемещение одного экрана на другой экран в зависимости от периода времени в приложении BlackBerry - PullRequest
0 голосов
/ 20 мая 2010

Для моего приложения Blackberry я использую стартовый экран с индикатором выполнения. Я заполняю индикатор выполнения с помощью таймера, и после его выполнения мне нужно перейти на другой экран.

Я проверяю вот так, где 'i' - время, увеличивающееся с 0 до 100.

timer.cancel(); 

if(i>=99) 

UiApplication.getUiApplication().pushScreen(new TipCalculatorScreen());      

Этот код не работает.

Для индикатора выполнения я использую такой код:

 private GaugeField percentGauge;

  percentGauge = new GaugeField(null, 0, 100,50, GaugeField.PERCENT);

                 timer=new Timer();
                   timer.scheduleAtFixedRate(new TimerTask(){
                       int i=0;

                       public void run() {
                           percentGauge.setValue(i);
                              i++;
                                 if(i>=99)
                                 {
                                     timer.cancel();

                                       //for page navigating i am given like this here screen is not navigating getting error
                               UiApplication.getUiApplication().pushScreen(new nextscreen());   

                                 }       

                           }
                   }, 100,100);

1 Ответ

1 голос
/ 25 мая 2010

Вам необходимо внести изменения в пользовательский интерфейс в потоке пользовательского интерфейса. TimerTask выполняется в своем собственном потоке. Вместо

UiApplication.getUiApplication().pushScreen(new nextscreen());

вы должны использовать

UiApplication.getUiApplication().invokeLater(new Runnable() {
    public void run() {
        UiApplication.getUiApplication()..pushScreen(new nextscreen());
    }
});

Обновление вашего контроля датчика, вероятно, требует такой же обработки.

...