Question

D'après le documentation , Display.setCurrent ne fonctionne pas si le affichable actuel est une alerte. Ceci est un problème que je voudrais faire apparaître une autre alerte lorsque l'utilisateur sélectionne une commande. est-ce que quelqu'un sait comment contourner ce afin que nous puissions passer d'une alerte à l'autre? J'utilise CLDC 1.0 et MIDP 2.0.

Informations supplémentaires

Les spécifications ne nous permettent d'éditer une alerte alors qu'il est à l'écran, mais certains téléphones Nokia ne gère pas bien du tout. Donc, je suis en train maintenant d'aller de l'alerte à une toile vierge, puis de nouveau à l'alerte. Bien sûr, je ne veux pas l'utilisateur d'interagir avec la toile précédente, il semble donc que je suis obligé de créer une nouvelle toile vierge. En tant que sidenote, cela présente l'inconvénient léger de regarder pire sur les téléphones qui ont encore l'écran précédent lorsqu'une alerte est affichée.

Le plus gros problème est de savoir comment la transition de la toile blanche retour à une alerte une fois que la toile est chargée. Les essais sur l'émulateur Motorola a révélé que showNotify n'est pas appelé après son retour d'une alerte à l'écran précédent. Je suppose que je pourrais créer la prochaine alerte dans la méthode de peinture, mais cela semble être un hack laid.

Était-ce utile?

La solution 2

Je ne pouvais pas trouver un moyen de contourner cela, donc je viens d'utiliser le hack de peinture.

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

Autres conseils

OK, donc votre problème est que vous ne peut pas le mettre à faire:

Display.setCurrent(alert1, alert2);

et

Display.setCurrent(alert2);

est également pas possible si le affichable actuel est déjà alert1 .

Alors que diriez-vous de mettre un élément affichable intermédiaire qui est vide et que les changements immédiatement à la prochaine alerte? En supposant que le courant est affichable alert1 , comme dans votre alert1 de bloc de commande:

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

Cela devrait fonctionner en supposant que vous n'utilisez pas la commande par défaut « Rejeter ». Donc, fondamentalement, il va de alert1 -> ( blankForm -> alert2 ).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top