1

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

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

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);
4

1 回答 1

0

你的错误是关于做什么的错误假设setCurrent(null)。根据您的问题和代码片段,您似乎希望它以某种方式显示在form. 它没有,请参阅 API javadocs 中的解释(可在线获取):

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

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


为了完整起见,请注意还有另一个版本接受setCurrent两个参数,第一个是Alert,它的工作方式有点不同,但它不适用于您的情况,因为您使用Formnot Alert

于 2012-08-28T21:06:54.847 回答