Domanda

Secondo la documentazione , Display.setCurrent non funziona se la corrente è visualizzabile un avviso. Questo è un problema come vorrei a pop-up un altro avviso quando l'utente seleziona un comando. qualcuno sa come ovviare a questo in modo che possiamo andare da un avviso ad un altro? sto usando CLDC 1.0 e MIDP 2.0.

Ulteriori informazioni

La specifica non ci permettono di modificare un avviso mentre è sullo schermo, ma alcuni telefoni cellulari Nokia non gestiscono bene a tutti. Così ora sto cercando di andare dal attenti a una tela bianca, poi di nuovo l'allarme. Certo che non voglio all'utente di interagire con la tela precedente, così sembra che io sono costretto a creare una nuova tela bianca. Come sidenote, questo ha il leggero svantaggio di guardare peggio sui telefoni che hanno ancora la schermata precedente quando viene mostrato un avviso.

Il problema più grande è come passaggio dalla tela bianca di nuovo ad un avviso una volta che la tela viene caricato. Test sull'emulatore Motorola ha rivelato che showNotify non è chiamato dopo il ritorno da un avviso alla schermata precedente. Credo che avrei potuto creare la prossima avviso nel metodo vernice, ma questo mi sembra un brutto hack.

È stato utile?

Soluzione 2

Non riuscivo a trovare un modo per aggirare questo, quindi ho solo usato il trucco vernice.

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

Altri suggerimenti

OK, in modo che il problema è che si non possono impostare fino a fare:

Display.setCurrent(alert1, alert2);

e

Display.setCurrent(alert2);

è anche non possibile se la corrente visualizzabile è già alert1 .

Così come su mettere un elemento visualizzabile intermedio che è vuoto e che cambia immediatamente al successivo avviso? Supponendo che la corrente visualizzabile è alert1 , come questo nel tuo alert1 's blocco di comando:

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

Che dovrebbe funzionare a patto che non si utilizza il default 'Ignora' di comando. Quindi, in pratica si va da alert1 -> ( blankForm -> alert2 ).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top