Вам нужно оповещение :
Предупреждение - это экран, который показывает данные пользователю и ожидает в течение определенного периода времени, прежде чем перейти к следующему отображению. Предупреждение может содержать текстовую строку и изображение. Предполагаемое использование Alert - информирование пользователя об ошибках и других исключительных условиях.
С помощью 2 команд («Да» / «Нет» в вашем случае):
Если в оповещении присутствуют две или более команд, оно автоматически превращается в модальное оповещение, а значение тайм-аута всегда НАВСЕГДА. Оповещение остается на дисплее до тех пор, пока не будет вызвана команда.
Это встроенные классы, поддерживаемые в MIDP 1.0 и выше. Также ваш фрагмент кода никогда не будет работать. Такой API должен был бы блокировать вызывающий поток, ожидающий выбора и ответа пользователя. Это идет точно в противоположном направлении модели взаимодействия пользовательского интерфейса MIDP, которая основана на обратных вызовах и делегировании. Вам нужно предоставить свой собственный класс, реализующий CommandListener , и подготовить свой код для асинхронного выполнения.
Вот пример (непроверенный!) Класса на основе Alert:
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
}
};
Чтобы использовать его (опять же, непроверенный и у меня на голове):
MyPrompter prompt = new MyPrompter();
Display.getDisplay(YOUR_MIDLET_INSTANCE).setCurrent(prompt.getDisplayable());
Этот код сделает запрос текущей отображаемой формой в вашем приложении, но он не заблокирует вашу ветку , как в примере, который вы разместили. Вам нужно продолжить работу и дождаться вызова commandAction.