2012-02-05 31 views
0

私のアプリケーションには、その詳細の下に1つの画面があります。画面名イベントリスト。この画面は完全に設計されています。 ButtonFieldNextPreviousの2つがあります。これらの2つの底部にはButtonListFieldがこの画面に配置されています。アプリケーションのメイン画面内の画面の表示方法

NextまたはPreviousをクリックすると、ListFieldが更新されます。この画面で作成されたupdateListField() methodを使用して正常に更新されます。これまですべてがうまくいっています。しかし、私の懸念は、私はこれらのButtonListFieldをクリックしたとき(3または4秒程度)の時間がかかります新しいデータを更新することです。バックグラウンドでの私のデータの更新の間に私はPlease wait.../Loading...のようなMassageを表示したいと思います。 PopupScreenを使用せずにこれをどのように表示できますか?

私は以下のコードを試しましたが、正しく動作しませんでした。私が行われます

VerticalFieldManager manager = new VerticalFieldManager(); 

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

は、この使用してPopupScreen私の完全な論理は、その画面の変更となり、それが時間のかかる作業になります。

我々は、既存のMainScreenFieldManagerを追加することができますどのように私を提案してください。

ありがとうございました!!!

答えて

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クラスを使用すると、このために使用することができ、ステータスフィールドを含みます。

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

をそのステータスを削除するには::MainScreen追加拡張クラスでは

setStatus(null); 

ただし、イベントスレッド上でこれを行うと、その後OSがユーザーインターフェイスを更新することができますので、返却する必要があります。あなたがイベントスレッド(ボタンが押されたときにコードを呼び出すスレッド)上のリストの更新を実行しているなら、あなたはspearateスレッドでその作業を実行してUiApplication.invokeLaterを(使用)またはにイベントロックを保持する必要がありますユーザーインターフェイスで更新を実行します。

関連する問題