我的应用程序在其详细信息下方有一个屏幕。屏幕名称EventList。这个屏幕设计得很满。有两个ButtonField
、Next
和Previous
。在这两个Button
的底部,ListField
被放置在此屏幕中。
当我点击Next
或Previous
时,我的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);
}
});