Frage

Ich bin auf der Suche nach einer einfachen Lösung für ein ja/Nein-dialog, um die Verwendung in einer Java ME midlet.Ich möchte es gerne, aber andere Möglichkeiten sind okey.

if (YesNoDialog.ask("Are you sure?") == true) {
  // yes was chosen
} else {
  // no was chosen
}
War es hilfreich?

Lösung

Sie benötigen einen Alarm :

  

Eine Warnung ist ein Bildschirm, Daten an den Benutzer zeigt und wartet auf einen bestimmten Zeitraum, bevor zum nächsten Anzeigbare fortfahren. Ein Alarm kann eine Textzeichenfolge und ein Bild enthalten. Die beabsichtigte Verwendung von Alert ist der Benutzer über Fehler und andere Ausnahmebedingungen zu informieren.

Mit 2 Befehle ( "Ja" / "Nein" in Ihrem Fall):

  

Wenn es zwei oder mehr Befehle, die auf dem Alarm, wird sie automatisch in einen modalen Alarm eingeschaltet, und der Timeout-Wert ist immer FüR IMMER. Der Alarm bleibt auf dem Display, bis ein Befehl aufgerufen wird.

Es handelt sich um integrierte Klassen in MIDP unterstützt 1.0 und höher. Auch Ihr Code-Snippet wird nie funktionieren. Eine solche API für den Benutzer Antwort auswählen und warten müssten den aufrufenden Thread blockieren. Dies geht genau in die entgegengesetzte Richtung des UI-Interaktionsmodell von MIDP, die Rückrufe und Delegierung basiert. Sie benötigen eine eigene Klasse zur Verfügung zu stellen, die Umsetzung Command , und der Code für die asynchrone Ausführung vorzubereiten.

Hier ist eine (nicht getestet!) Beispielklasse basierend auf Alarm:

public class MyPrompter implements CommandListener {

    private Alert yesNoAlert;

    private Command softKey1;
    private Command softKey2;

    private boolean status;

    public MyPrompter() {
        yesNoAlert = new Alert("Attention");
        yesNoAlert.setString("Are you sure?");
        softKey1 = new Command("No", Command.BACK, 1);
        softKey2 = new Command("Yes", Command.OK, 1);
        yesNoAlert.addCommand(softKey1);
        yesNoAlert.addCommand(softKey2);
        yesNoAlert.setCommandListener(this);
        status = false;
    }

    public Displayable getDisplayable() {
        return yesNoAlert;
    }

    public boolean getStatus() {
        return status;
    }

    public void commandAction(Command c, Displayable d) {
        status = c.getCommandType() == Command.OK;
        // maybe do other stuff here. remember this is asynchronous
    }

};

Um es zu verwenden (auch hier nicht getestet und auf meinem Kopf):

MyPrompter prompt = new MyPrompter();
Display.getDisplay(YOUR_MIDLET_INSTANCE).setCurrent(prompt.getDisplayable());

Dieser Code wird die Aufforderung die aktuelle angezeigte Formular in Ihrer Anwendung, aber es wird der Thread nicht blockieren wie im Beispiel Sie auf dem Laufenden. Sie müssen weiterlaufen und für einen Aufruf command warten.

Andere Tipps

ich mich nicht, in Java programmiert haben, aber ich fand in seiner Referenz für optionale Pakete die Advanced Graphics und User Interface API , und es wie die Java SE-API verwendet wird diese Dialoge mit dem JOptionPane Klasse zu erstellen

  

int JOptionPane.showConfirmDialog (java.awt.Component Parent, java.lang.Object> Nachricht, java.lang.String Titel, int option)

Zurück könnte JOptionPane.YES_OPTION, JOptionPane.NO_OPTION, JOptionPane.CANCEL_OPTION ...

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