我的应用程序在其详细信息下面有一个屏幕。屏幕名称 EventList 。这个屏幕设计完整。有两个ButtonField
Next
和Previous
。在这两个Button
ListField
的底部放置在此屏幕中。
当我点击Next
或Previous
时,我的ListField
会更新。使用在此屏幕中创建的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
。
提前致谢!!!
答案 0 :(得分:1)
MainScreen类包含一个可用于此的状态字段。在您的类中扩展MainScreen添加:
setStatus(new LabelField("Please wait..."));
删除该状态:
setStatus(null);
但是,您需要在事件线程上执行此操作然后返回,以便操作系统可以更新用户界面。如果您正在事件线程(按下按钮时将调用代码的线程)执行列表更新,那么您应该在一个特殊线程上执行该工作并使用UiApplication.invokeLater()或保持事件锁定在用户界面上执行更新。
答案 1 :(得分: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);
}
});