ポップアップ画面を使用して、バックグラウンドアップロードプロセスの更新ステータスを表示しています。間にアップロードをキャンセルしたいと思います。私は、これを達成するために、ポップアップ画面にボタンを追加するか、デバイスの物理的なバックボタンを使用してこれを達成しようとしています。しかし、生成されたイベントのどれもがアプリケーションによって捕らえられていないようです。ここでPopUpScreen Blackberryでのイベントのブロック
は、私は、ポップアップ画面を作成し、すぐにこのラインafther私はこの
UiApplication.getUiApplication().invokeLater(new Runnable() {
public void run() {
//.... do other stuff I wanted done...
backUpThread = Thread.currentThread();
uploadItems();
}
});
しかし、もし同様のスレッドで、実際のアップロードプロセスを呼び出していたユーザ
DialogFieldManager manager = new DialogFieldManager();
//DialogFieldManager manager = (DialogFieldManager)getDelegate();
statusUpdate = new LabelField("Please Wait...");
manager.addCustomField(statusUpdate);
_gaugeField = new GaugeField("", 0, 100, 0, GaugeField.PERCENT);
manager.addCustomField(_gaugeField);
cncl_Btn = new ButtonField("Cancel",ButtonField.CONSUME_CLICK | ButtonField.FIELD_HCENTER | ButtonField.NEVER_DIRTY);
manager.addCustomField(cncl_Btn);
cancelFlag = 0;
cncl_Btn.setChangeListener(new FieldChangeListener()
{
public void fieldChanged(Field field, int context) {
// Auto-generated method stub
UiApplication.getUiApplication().invokeLater(new Runnable()
{
public void run()
{
cancelFlag = 1;
//onClose();//as this method exited from application
// close();//this method gave me IllegalStateException
}
});
}
});
//BackUpScreen.this.addMenuItem(_viewItem);
popup = new PopupScreen(manager);
UiApplication.getUiApplication().pushScreen(popup);
tを、それを表示しています方法ですポップアップ画面の中にあるキャンセルボタンを押して、応答しない。私はボタンのfieldchangeリスナーメソッドの中にブレークポイントを追加してこれをチェックしました。
ブラックベリーでどうすればいいですか?
お返事ありがとうございます。どのようにこれを正しく行うことができますか? – Zach
あなたは既にあなたのプログラムにスレッドを持っているようですので、あなたはJavaとBlackBerryでのスレッドに精通していると思います。すべてのブロッキング関数をイベントスレッドではないスレッドに移動するだけで済みます。どのようにこれを行い、プログラムロジックとのインターフェースがプログラムによって異なります。 – Richard