2012-08-28 47 views
1

我有一个文本框(下级)的调用调用一个包含数据字段拿起一个日期,在我的文本框LowerLevel的显示它更高的层次形式的函数。回到较低的水平J2ME

的问题是我不能回到我的文本框(下级),因为出现的DateField

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

你在混合LCDUI和LWUIT吗? –

回答

0

你的错误是什么呢setCurrent(null)错误的假设。根据你的问题和代码片段,它看起来像你期望它以某种方式显示在form之前显示的屏幕。这不,看到在API的javadoc(available online)的exaplanation:

应用程序可以传递null作为参数的setCurrent()。这不会将当前的Displayable设置为null;相反,当前的Displayable保持不变。但是,如果你想使用setCurrent(Displayable)表现出一定的屏幕,而不是当前的应用程序管理软件可以解释这一呼吁来自其正在请求被放置到后台应用程序的请求......

,您需要将此屏幕作为参数传递给setCurrent


为了完整起见,注意,是setCurrent接受两个参数,第一个是Alert,其不同的工作原理有点another version,但它是不是适合你的情况,因为你使用FormAlert