回到较低的水平j2me

时间:2012-08-28 11:07:54

标签: java-me midp lcdui

我有一个文本字段(下层)调用一个函数,该函数调用一个更高级别的表单,其中包含一个数据字段来获取日期并在我的textfield下级显示它。

问题是我无法返回到我的文本字段(较低级别),因为日期字段出现

public void formdatepicker() {


    final javax.microedition.lcdui.Command CONFIRM_COMMAND
            = new javax.microedition.lcdui.Command("OK",
            javax.microedition.lcdui.Command.OK, 1);
    javax.microedition.lcdui.Command CANCEL_COMMAND
            = new javax.microedition.lcdui.Command("Cancel",
            javax.microedition.lcdui.Command.CANCEL, 2);


    final DateField datefield = new DateField("Pick a date", DateField.DATE);
    form.append(datefield);
    form.addCommand(CONFIRM_COMMAND);
    form.addCommand(CANCEL_COMMAND);
    form.setCommandListener(new CommandListener() {                         
        public void commandAction(javax.microedition.lcdui.Command c, Displayable d) {
             if (c == CONFIRM_COMMAND) {
                Date date = datefield.getDate();
                display.setCurrent(null);// try to hide the current form to get 




             }                              
        }
    });

    Display.getInstance().getJ2MEDisplay().setCurrent(form);

1 个答案:

答案 0 :(得分:0)

关于setCurrent(null)做什么,你的错误是错误的假设。根据您的问题和代码段,看起来您希望以某种方式显示在form之前显示的屏幕。它没有,看到API javadocs(available online)中的exaplanation:

  

应用程序可以将null作为参数传递给setCurrent()。这不具有将当前Displayable设置为null的效果;相反,当前的Displayable保持不变。但是,应用程序管理软件可能会将此调用解释为应用程序请求将其置于后台...

如果您想使用setCurrent(Displayable)来显示某个屏幕而不是当前屏幕,则需要将此屏幕作为参数传递给setCurrent


为了完整起见,请注意,setCurrent Alert接受两个参数,其中第一个参数为Form,其工作方式略有不同,但不适用在您的情况下,因为您使用Alert而不是{{1}}。