Blackberry - Проблемы с динамическим обновлением LabelField - PullRequest
2 голосов
/ 08 февраля 2011

Я пытаюсь разработать приложение BlackBerry для Storm2.Я столкнулся с проблемой при попытке обновить LabelField из другого экземпляра приложения.

Программа работает без обновления этого LabelField, но когда я пытался добавить код для обновления текста, он становитсяне отвечает после строки "settext".

Я что-то упустил?

public class AgentTrackerScreen extends MainScreen
{
    public static LabelField _outputText;
    ...
}

public class BtService implements Runnable
{
    ...
    public void run() 
    {
        AgentTrackerScreen._outputtext.settext(
            "Something: " + btListener.vecDevices.size());
    }
    ...
}

Ответы [ 2 ]

3 голосов
/ 08 февраля 2011

Вы должны сделать все модификации пользовательского интерфейса в потоке событий или заблокировать пользовательский интерфейс, прежде чем делать это. Подробнее см. BlackBerry UI Threading .

(Кстати, это распространенное требование во многих системах с пользовательским интерфейсом. Swing в Java SE имеет это требование. Как и WPF в Windows.)

1 голос
/ 09 февраля 2011

Используйте либо:

  • invokeAndWait (Runnable r)
  • invokeLater (Runnable r)
  • синхронизация по UiApplication.getEventLock ()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...