Pregunta

Estoy buscando una solución sencilla para un sí/no de diálogo para utilizar en un midlet Java ME.Me gustaría usarlo como este, pero de otras maneras son okey.

if (YesNoDialog.ask("Are you sure?") == true) {
  // yes was chosen
} else {
  // no was chosen
}
¿Fue útil?

Solución

Usted necesita un Alerta:

Una alerta es una pantalla que muestra los datos para el usuario y se espera un cierto período de tiempo antes de pasar a la siguiente Visible.Una alerta puede contener una cadena de texto y una imagen.El uso previsto de Alerta para informar a los usuarios acerca de los errores y otras condiciones excepcionales.

Con 2 comandos ("Sí"/"No" en su caso):

Si hay dos o más Comandos en la Alerta, es automáticamente convertido en un referente de Alerta, y el valor de tiempo de espera es siempre para SIEMPRE.La Alerta permanece en la pantalla hasta que un Comando se invoca.

Estos están integrados en las clases admitidas en MIDP 1.0 y superiores.También el fragmento de código no funcionará nunca.Un API es necesario bloquear el subproceso de llamada en espera para que el usuario seleccione y respuesta.Esto va exactamente en la dirección opuesta de la interfaz de usuario modelo de interacción de MIDP, que se basa en las devoluciones de llamada y de la delegación.Usted tiene que proporcionar su propia clase, la implementación de CommandListener, y preparar el código para la ejecución asíncrona.

Aquí está una (no probado!) ejemplo de clase basado en Alerta:

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
    }

};

Para utilizar (de nuevo, no probado y en la parte superior de mi cabeza):

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

Este código hará que el símbolo de la corriente se muestra el formulario en su aplicación, pero no bloquear el hilo como en el ejemplo que has publicado.Usted necesidad de continuar la ejecución y esperar un commandAction invocación.

Otros consejos

No tengo programado en Java ME, pero me he encontrado en ella la referencia para los paquetes opcionales de la Avanzadas de Gráficos y la Interfaz de Usuario de la API, y se utiliza como el Java SE API para crear estos cuadros de diálogo con la La Clase JOptionPane

int JOptionPane.showConfirmDialog(java.awt.Componente parentComponent, java.lang.Objeto >mensaje de java.lang.String título, int optionType)

Devolución podría ser JOptionPane.YES_OPTION, JOptionPane.NO_OPTION, JOptionPane.CANCEL_OPTION ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top