【问题标题】:get back to lower level j2me回到较低级别的 j2me
【发布时间】:2012-08-29 05:09:13
【问题描述】:

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

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

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

【问题讨论】:

  • 你在混合 LCDUI 和 LWUIT 吗?

标签: java-me midp lcdui


【解决方案1】:

您的错误是对 setCurrent(null) 所做的事情的错误假设。根据您的问题和代码 sn-p,您似乎希望它以某种方式显示在 form 之前显示的屏幕。没有,请参阅 API javadocs (available online) 中的说明:

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

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


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

【讨论】:

    猜你喜欢
    • 2016-04-28
    • 1970-01-01
    • 2020-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-22
    相关资源
    最近更新 更多