2010-11-23 11 views
0

J'ajoute donc un formulaire à mon application J2ME mais obtiens toujours une exception nullpointer lorsque j'essaie de revenir à l'écran principal. Cela ne semble pas se produire lorsque j'utilise une toile, je peux retourner au menu principal avec succès. Ce qui donne?Obtention d'une exception nullpointer lors de la commutation des objets affichables dans J2ME

À partir de la forme de la principale midlet

quickAlarm = new QuickAlarm("Set quick alarm",this); 
       display.setCurrent(quickAlarm); 

Constructor dans 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); 
    } 

Pour en revenir au menu principal de QuickAlarm,

this.midlet.leaveCanvas(); 

C'est dans la principale midlet

public void leaveCanvas() { 
     display.setCurrent(startOptions); 
} 

L'erreur complète est

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

display.setCurrent (startOptions); Où est * startOptions * défini? – frayser

+0

Son défini dans le middlet principal. – Pallinder

Répondre

0

Mépris, je simplement oublié de configurer l'auditeur de commande.

0

définir ce qui est « QuickAlarm » & « StartOptions » .vous devrait pouvoir passer le « affichable » objet dans le « display.setCurrent() » method.So vérifier pour « QuickAlarm » & « StartOptions » ils sont les sous-classe de "javax.microedition.lcdui.Displayable"