Несколько последовательных оповещений в Java ME - PullRequest
0 голосов
/ 30 марта 2010

Согласно документации , Display.setCurrent не работает, если текущим отображаемым значением является предупреждение. Это проблема, так как я хотел бы вызвать другое предупреждение, когда пользователь выбирает команду. Кто-нибудь знает, как обойти это, чтобы мы могли переходить от одного предупреждения к другому? Я использую CLDC 1.0 и MIDP 2.0.

Дополнительная информация

Спецификация позволяет нам редактировать оповещение, пока оно на экране, но некоторые телефоны Nokia не справляются с этим вообще. Поэтому я сейчас пытаюсь перейти от предупреждения к пустому холсту, а затем вернуться к предупреждению. Конечно, я не хочу, чтобы пользователь взаимодействовал с предыдущим холстом, поэтому мне кажется, что я вынужден создать новый пустой холст. Как примечание, у этого есть небольшой недостаток - он выглядит хуже на телефонах, которые все еще имеют предыдущий экран, когда отображается предупреждение.

Большая проблема заключается в том, как перейти с пустого холста обратно к предупреждению после загрузки холста. Тестирование на эмуляторе Motorola показало, что showNotify не вызывается после возврата из предупреждения на предыдущий экран. Я думаю, я мог бы создать следующее предупреждение в методе рисования, но это похоже на уродливый взлом.

Ответы [ 2 ]

1 голос
/ 03 апреля 2010

ОК, поэтому ваша проблема в том, что вы не можете настроить его на:

Display.setCurrent(alert1, alert2);

и

Display.setCurrent(alert2);

также не возможно, если текущий отображаемый объект уже alert1 .

Так как насчет размещения промежуточного отображаемого элемента, который является пустым и который сразу же меняется на следующее предупреждение? Предполагая, что текущим отображаемым значением является alert1 , например, в вашем командном блоке alert1 :

Display.setCurrent(blankForm);
Display.setCurrent(alert2);

Это должно сработать, если вы не используете стандартную команду 'Dismiss'. Таким образом, в основном это происходит от alert1 -> ( blankForm -> alert2 ).

0 голосов
/ 07 апреля 2010

Я не мог найти способ обойти это, поэтому я просто использовал хак с краской.

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);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...