Forms 在J2ME中切换可显示项时获取空指针异常

Forms 在J2ME中切换可显示项时获取空指针异常,forms,java-me,Forms,Java Me,因此,我向我的J2ME应用程序添加了一个表单,但当试图返回主屏幕时,总是会得到一个null指针异常。当我使用画布时,这似乎不会发生,我可以成功地返回主菜单。有什么好处 从主midlet开始形成 quickAlarm = new QuickAlarm("Set quick alarm",this); display.setCurrent(quickAlarm); public void leaveCanvas() { display.setCurre

因此,我向我的J2ME应用程序添加了一个表单,但当试图返回主屏幕时,总是会得到一个null指针异常。当我使用画布时,这似乎不会发生,我可以成功地返回主菜单。有什么好处

从主midlet开始形成

quickAlarm = new QuickAlarm("Set quick alarm",this);
                display.setCurrent(quickAlarm);
 public void leaveCanvas() {
      display.setCurrent(startOptions);
 }
QuickAlarm中的构造函数

public QuickAlarm(String title,HelloMIDlet midlet) {
      super(title);
      df = new DateField("Alarm time",DateField.TIME);
      this.append(df);
      this.midlet = midlet;

      backCommand = new Command("Back",Command.BACK,0);
      saveCommand = new Command("Save",Command.OK,1);

      this.addCommand(backCommand);
      this.addCommand(saveCommand);
    }
从QuickAlarm返回主菜单

this.midlet.leaveCanvas();
这是在主中段

quickAlarm = new QuickAlarm("Set quick alarm",this);
                display.setCurrent(quickAlarm);
 public void leaveCanvas() {
      display.setCurrent(startOptions);
 }
完全错误是

TRACE: <at java.lang.NullPointerException:   0>, Exception caught in Display class
java.lang.NullPointerException:   0
        at javax.microedition.lcdui.Display$ChameleonTunnel.callScreenListener(), bci=46
        at com.sun.midp.chameleon.layers.SoftButtonLayer.processCommand(), bci=74
        at com.sun.midp.chameleon.layers.SoftButtonLayer.soft1(), bci=37
        at com.sun.midp.chameleon.layers.SoftButtonLayer.keyInput(), bci=36
        at com.sun.midp.chameleon.CWindow.keyInput(), bci=38
        at javax.microedition.lcdui.Display$DisplayEventConsumerImpl.handleKeyEvent(), bci=17
        at com.sun.midp.lcdui.DisplayEventListener.process(), bci=277
        at com.sun.midp.events.EventQueue.run(), bci=179
        at java.lang.Thread.run(Thread.java:637)

不管怎样,我只是忘了设置命令侦听器

定义什么是quickAlarm&startOptions。您应该能够在display.setCurrent方法中传递可显示对象。因此,请检查quickAlarm&startOptions,它们是javax.microedition.lcdui.Displayable的子类

display.setCurrentstartOptions;startOptions设置在哪里?它在主中间位置定义。