0

私のアプリケーションには、その詳細の下に 1 つの画面があります。スクリーン名EventList。この画面は完全に設計されています。との 2 つButtonField NextありPreviousます。この画面では、これら 2 つの下部にButton ListField配置されます。

をクリックすると、またはNext更新されます。この画面で作成されたものを使用して正常に更新されます。これまではすべて正常に機能しています。しかし、私の懸念は、これらをクリックすると、新しいデータを更新するのに時間がかかることです (約 3 または 4 秒)。バックグラウンドでのデータ更新中に、のように表示したい。を使用せずにこれを表示するにはどうすればよいですか。PreviousListFieldupdateListField() methodButton ListFieldMassagePlease wait.../Loading...PopupScreen

以下のコードを試しましたが、正しく動作しませんでした。

VerticalFieldManager manager = new VerticalFieldManager();

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

完全なロジックを使用してこれを行うPopupScreenと、その画面の変更が行われ、時間のかかる作業になります。

FieldManager既存のに追加する方法を教えてくださいMainScreen

前もって感謝します !!!

4

2 に答える 2

1

MainScreen クラスには、これに使用できるステータス フィールドが含まれています。MainScreen を拡張するクラスに次を追加します。

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

そのステータスを削除するには:

setStatus(null);

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

于 2012-02-05T18:00:34.087 に答える
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); 

} 
});
于 2012-02-06T06:34:15.350 に答える