2012-02-05 97 views
0

我的应用程序有一个屏幕下方的细节。屏幕名称EventList。这个屏幕设计完整。有两个ButtonFieldNextPrevious。在这两个屏幕的底部放置这两个ButtonListField如何在应用程序的MainScreen中显示屏幕

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

我曾尝试下面的代码,但无法正常工作。

VerticalFieldManager manager = new VerticalFieldManager(); 

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

如果我将这样做使用PopupScreen我的全部逻辑将是该屏幕的变化,这将耗时的任务。

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

在此先感谢!

回答

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

} 
}); 
1

MainScreen类包含一个可用于此的状态字段。在你的类扩展MainScreen补充:

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

移除状态:

setStatus(null); 

但是,你需要做的这个事件线程上,然后返回,以便操作系统可以更新用户界面。如果你在事件线程上执行你的列表更新(当按下按钮时将调用你的代码的线程),那么你应该在一个特定的线程上执行这个工作并使用UiApplication.invokeLater()或者将事件锁定为在用户界面上执行更新。

相关问题