Несколько последовательных предупреждений в Java ME
-
23-09-2019 - |
Вопрос
Согласно документация, Display.setCurrent
не работает, если текущий отображаемый объект является предупреждением.Это проблема, поскольку я хотел бы отображать еще одно предупреждение, когда пользователь выбирает команду.Кто-нибудь знает, как обойти это, чтобы мы могли переходить от одного оповещения к другому?Я использую CLDC 1.0 и MIDP 2.0.
Дополнительная информация
Спецификация позволяет нам редактировать оповещение, пока оно отображается на экране, но некоторые телефоны Nokia вообще с этим не справляются.Итак, теперь я пытаюсь перейти от оповещения к чистому холсту, а затем снова к оповещению.Конечно, я не хочу, чтобы пользователь взаимодействовал с предыдущим холстом, поэтому кажется, что я вынужден создать новый пустой холст.Кстати, у этого есть небольшой недостаток: он хуже выглядит на телефонах, на которых при отображении предупреждения все еще отображается предыдущий экран.
Более серьезная проблема заключается в том, как перейти от пустого холста обратно к оповещению после загрузки холста.Тестирование на эмуляторе Motorola показало, что showNotify не вызывается после возврата из оповещения на предыдущий экран.Думаю, я мог бы создать следующее оповещение в методе рисования, но это кажется уродливым хаком.
Решение 2
Я не смог найти способа обойти эту проблему, поэтому просто использовал трюк с краской.
public class AlertPage extends Canvas{
MIDlet midlet;
Alert alert;
private AlertPage(MIDlet midlet){
this.midlet=midlet;
}
protected void paint(Graphics arg0){
//Yep, this is a hack, but showNotify doesn't seem to work well for Motorola
if(alert!=null){
Display d=Display.getDisplay(midlet);
d.setCurrent(alert);
alert=null;
}
}
public static void showAlert(MIDlet m, Alert a){
AlertPage page=new AlertPage(m);
Display d=Display.getDisplay(m);
page.alert=a;
d.setCurrent(page);
}
}
Другие советы
ОК, твоя проблема в том, что ты не мочь настройте это так:
Display.setCurrent(alert1, alert2);
и
Display.setCurrent(alert2);
это также нет возможно, если текущий отображаемый объект уже предупреждение1.
Так как насчет размещения промежуточного отображаемого элемента, который является пустым и сразу же переходит к следующему предупреждению?Предполагая, что текущий отображаемый объект предупреждение1, вот так в твоем предупреждение1командный блок:
Display.setCurrent(blankForm);
Display.setCurrent(alert2);
Это должно работать, если вы не используете команду «Отпустить» по умолчанию.Итак, в основном это происходит от предупреждение1->(пустая форма->предупреждение2).