Pergunta

De acordo com documentação, Display.setCurrent Não funciona se o atual exibido for um alerta. Isso é um problema, pois eu gostaria de exibir outro alerta quando o usuário selecionar um comando. Alguém sabe como contornar isso para que possamos ir de um alerta para outro? Estou usando o CLDC 1.0 e MIDP 2.0.

informação adicional

A especificação nos permite editar um alerta enquanto estiver na tela, mas alguns telefones Nokia não lidam bem com isso. Então, agora estou tentando ir do alerta para uma tela em branco e depois de volta ao alerta. É claro que não quero que o usuário interaja com a tela anterior, por isso parece que sou forçado a criar uma nova tela em branco. Como sidenote, isso tem a ligeira desvantagem de parecer pior nos telefones que ainda possuem a tela anterior quando um alerta é mostrado.

O problema maior é como fazer a transição da tela em branco de volta para um alerta assim que a tela for carregada. Os testes no emulador da Motorola revelaram que o mostrado não é chamado após o retorno de um alerta para a tela anterior. Acho que poderia criar o próximo alerta no método de pintura, mas isso parece um hack feio.

Foi útil?

Solução 2

Não consegui encontrar uma maneira de contornar isso, então usei o hack de tinta.

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);
    }
}

Outras dicas

Ok, então seu problema é que você não pode configure -o para fazer:

Display.setCurrent(alert1, alert2);

e

Display.setCurrent(alert2);

é também não possível se o atual exibir já estiver ALERT1.

Então, que tal colocar um item exibido intermediário em branco e que muda imediatamente para o próximo alerta? Supondo ALERT1, assim em seu ALERT1Bloco de comando de

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

Isso deve funcionar assumindo que você não está usando o comando 'Disiss' padrão. Então, basicamente, vai de ALERT1->(formulário em branco->ALERT2).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top