2011-02-08 62 views
2

我正在尝试为Storm2开发BlackBerry应用程序。尝试从应用程序的其他实例更新LabelField时遇到问题。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()); 
    } 
    ... 
} 
+0

尝试分裂在你的`run()`方法里面的代码分成两行(第一行创建字符串,第二行使用`settext`中的字符串)来查看问题是用`settext`还是用`btListener.vecDevices.size() 。 – MusiGenesis 2011-02-08 15:34:31

+0

我已经试过了。 btListener.vecDevices.size()工作正常;我认为settext是有问题的。 – 2011-02-08 15:43:08

回答

3

您必须对事件线程进行所有用户界面修改,否则在执行之前先锁定用户界面。详细信息请参见BlackBerry UI Threading Basics

(顺便说一句,这是许多用户界面系统的共同要求摇摆在Java SE有此要求也是如此WPF在Windows上。)

1

二者必选其一:

  • invokeAndWait(Runnable接口[R )
  • 的invokeLater(Runnable接口R)
  • 上UiApplication.getEventLock同步()