Ваша главная ошибка здесь - я думаю, что не используется регистрация в вашем мидлете. Кроме этого, в опубликованном вами фрагменте кода нет явных ошибок.
Скорее всего, ошибка вызвана тем, что что-то идет не так в вашем коде метода getForm()
, но, поскольку нет записи в журнал, вы должны также проверить другие возможности, такие как, например, прослушиватель команд или no
объект команды, или alert
объект был каким-то образом изменен где-то еще в вашем коде.
При ведении журнала, как показано в примере ниже, вы можете просто запустить свой мидлет в эмуляторе и проверить сообщения консоли, чтобы узнать, был ли выполнен ожидаемый код:
public void commandAction(Command command, Displayable displayable) {
Log.log("command: [" + command.getCommandLabel()
+ "] at screen: [" + displayable.getTitle() + "]");
if(displayable==textbox)
{
Log.log("in textbox");
if(command==exit)
{
Log.log("handle exit command");
switchDisplayable(null,alert);
}
}
else if(displayable==alert)
{
Log.log("in alert");
if(command==no)
{
Log.log("handle no command");
switchDisplayable(alert,getForm());
}
else if(command==yes)
{
Log.log("handle yes command");
switchDisplayable(alert,getTextbox());
}
}
}
//...
public class Log {
// utility class to keep logging code in one place
public static void log (String message) {
System.out.println(message);
// when debugging at real device, S.o.p above can be refactored
// - based on ideas like one used here (with Form.append):
// http://stackoverflow.com/questions/10649974
// - Another option would be to write log to RMS
// and use dedicated MIDlet to read it from there
// - If MIDlet has network connection, an option is
// to pass log messages over the network. Etc etc...
}
}