Я использую всплывающий экран для отображения статуса обновления процессов фоновой загрузки. Я хочу отменить загрузку между ними. Я пытаюсь добиться этого либо путем добавления кнопки на всплывающий экран, либо с помощью физической кнопки устройства. Но похоже, что ни одно из сгенерированных событий не перехватывается приложением.
Вот как я создаю всплывающий экран и показываю его пользователю
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);
Вскоре после этой строки я вызываю фактический процесс загрузки в такой ветке, как эта
UiApplication.getUiApplication().invokeLater(new Runnable() {
public void run() {
//.... do other stuff I wanted done...
backUpThread = Thread.currentThread();
uploadItems();
}
});
Но если я нажму кнопку отмены внутри всплывающего экрана, он не отвечает. Я проверил это, добавив точку останова внутри метода слушателя fieldchange кнопки.
Как я могу сделать это в ежевике?