0

我的应用程序在其详细信息下方有一个屏幕。屏幕名称EventList。这块屏幕设计得满满当当。有两个ButtonField NextPrevious。这两个的底部Button ListField是放置在这个屏幕中的。

当我点击NextPreviousListField将更新。它已使用updateListField() method在此屏幕中创建的内容成功更新。一切都很好。但我担心的是,当我单击这些Button ListField将需要时间(大约 3 或 4 秒)来更新新数据。在后台更新数据期间,我想Massage显示Please wait.../Loading.... 我如何在不使用PopupScreen.

我试过下面的代码但不能正常工作。

VerticalFieldManager manager = new VerticalFieldManager();

manager.add(new LabelField("Please Wait..."));
Screen popup = new PopupScreen(manager);

如果我将使用PopupScreen我的完整逻辑来完成此操作,那么该屏幕将发生变化,这将是一项耗时的任务。

请建议我如何添加FieldManager现有的MainScreen.

提前致谢 !!!

4

2 回答 2

1

MainScreen 类包括一个可以用于此的状态字段。在扩展 MainScreen 的类中添加:

setStatus(new LabelField("Please wait..."));

删除该状态:

setStatus(null);

但是,您需要在事件线程上执行此操作,然后返回,以便操作系统可以更新用户界面。如果您在事件线程(按下按钮时将调用您的代码的线程)上执行列表更新,那么您应该在单独的线程上执行该工作并使用 UiApplication.invokeLater() 或保持事件锁定在用户界面上执行更新。

于 2012-02-05T18:00:34.087 回答
0
Application.getApplication().invokeLater( 
new Runnable() { 
public void run() { 

GIFEncodedImage image; 
EncodedImage encodedImage = EncodedImage 
.getEncodedImageResource("spiral.gif"); 
byte data[] = new byte[3000]; 
data = encodedImage.getData(); 
image = (GIFEncodedImage) EncodedImage 
.createEncodedImage( 
data, 0, 
data.length); 
AnimatedGIFField animatedGIF = new AnimatedGIFField( 
image); 

PopupScreen popup = new PopupScreen( 
new VerticalFieldManager()); 
popup.add(animatedGIF); 
Border border = BorderFactory 
.createSimpleBorder( 
new XYEdges(), 
Border.STYLE_SOLID); 
popup.setBorder(border); 
UiApplication 
.getUiApplication() 
.pushScreen(popup); 

Timer timer = new Timer(); 
timer.schedule(new CountDown(), 
3000); 

} 
});
于 2012-02-06T06:34:15.350 回答