Blackberry - LabelField动态更新问题

时间:2011-02-08 15:16:02

标签: blackberry

我正在尝试为Storm2开发BlackBerry应用程序。尝试从应用程序的其他实例更新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 个答案:

答案 0 :(得分:3)

您必须在事件线程上进行所有用户界面修改,否则在执行此操作之前会锁定用户界面。有关详细信息,请参阅BlackBerry UI Threading Basics

(顺便说一句,这是许多用户界面系统中的常见要求.Java SE中的Swing有此要求.Windows上的WPF也是如此。)

答案 1 :(得分:1)

使用:

  • invokeAndWait(Runnable r)
  • invokeLater(Runnable r)
  • 在UiApplication.getEventLock()
  • 上进行同步