如何在应用程序的MainScreen中显示屏幕



我的应用程序在其详细信息下方有一个屏幕。屏幕名称EventList。这个屏幕设计得很满。有两个ButtonFieldNextPrevious。在这两个Button的底部,ListField被放置在此屏幕中。

当我点击NextPrevious时,我的ListField将更新。使用在此屏幕中创建的updateListField() method成功更新。到目前为止一切都很顺利。但我担心的是,当我点击这些Button ListField时,更新新数据需要时间(大约3或4秒)。在后台更新数据的过程中,我想像Please wait.../Loading...一样显示Massage。如果不使用PopupScreen,我如何显示此内容。

我试过下面的代码,但没有正常工作。

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

如果我将使用PopupScreen来完成这项工作,那么我的整个逻辑将针对该屏幕进行更改,这将是一项耗时的任务。

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

提前感谢!!!

MainScreen类包含一个可以用于此操作的状态字段。在你的班级扩展主屏幕添加:

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

删除该状态:

setStatus(null);

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

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); 
} 
});

相关内容

  • 没有找到相关文章

最新更新