Frage

Nach dem Dokumentation , Display.setCurrent nicht funktioniert, wenn der aktuelle darstellbaren eine Warnung ist. Dies ist ein Problem, da ich eine andere Warnung an Pop-up möchte, wenn der Benutzer wählt einen Befehl. Wer weiß, wie zu um diese Arbeit, so dass wir von einem Alarm zu einem anderen gehen können? ich bin mit CLDC 1.0 und MIDP 2.0.

Weitere Informationen:

Die Spezifikation erlaubt uns eine Benachrichtigung zu bearbeiten, während es auf dem Bildschirm, aber einige Nokia-Handys haben es nicht gut überhaupt handhaben. So versuche ich nun von der Benachrichtigung an eine leere Leinwand zu gehen, dann zurück auf die Warnung. Natürlich möchte ich nicht der Benutzer mit dem vorherigen Leinwand zu interagieren, so scheint es, dass ich eine neue leere Leinwand zu erstellen bin gezwungen. Als Nebenbei bemerkt, hat dies den leichten Nachteil sucht schlechter auf Handys, die immer noch den vorherigen Bildschirm haben, wenn eine Warnung angezeigt wird.

Das größere Problem ist, wie man Übergang von der leeren Leinwand zurück auf eine Warnung, sobald die Leinwand geladen wird. Testen auf dem Motorola-Emulator ergab, dass showNotify nicht nach der Rückkehr von einer Warnung zum vorherigen Bildschirm aufgerufen wird. Ich glaube, ich könnte die nächste Warnung in der paint-Methode erstellen, aber dies scheint wie eine hässliche Hack.

War es hilfreich?

Lösung 2

Ich konnte keinen Weg, um dies finden, so dass ich die Farbe Hack gerade verwendet wird.

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

Andere Tipps

OK, also Ihr Problem ist, dass Sie kann nicht es einrichten zu tun:

Display.setCurrent(alert1, alert2);

und

Display.setCurrent(alert2);

ist auch nicht möglich, wenn die aktuelle Anzeigbare bereits alert 1 .

So wie etwa ein Zwischen Anzeigbare Posten, die leer ist und dass Änderungen sofort zum nächsten Alarm? Unter der Annahme der aktuellen Anzeigbare ist alert 1 , wie dies in der alert 1 's-Befehlsblock:

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

soll, dass die Arbeit Sie geht davon aus, die nicht standardmäßig mit ‚Ablehnen‘ Befehl. Also im Grunde geht es von alert 1 -> ( blankForm -> alert 2 ).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top