Actualmente estoy trabajando con MIDlets (estoy usando un MIDlet visual) en Netbeans, y se está lanzando una NullPointerException, pero no sé por qué.J2ME (Java) - Excepción del puntero nulo capturada en la clase de pantalla
Nota: La excepción no se produce cuando el programa se ejecuta en el emulador, solo cuando se presiona el botón de comando OK.
Aquí está el error que consigo
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:619)
He despojado a cabo todo el código no relacionado con la excepción, por lo que se puede leer que sea más fácil. A continuación se muestra una versión simplificada si el código que tengo, que arroja la excepción anterior.
package stMidlet;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class StoryMidlet extends MIDlet implements CommandListener {
private boolean midletPaused = false;
private Command commandOk1;
private Form form1;
private TextField textField1;
public StoryMidlet() {
commandOk1 = new Command("Ok", Command.OK, 1);
textField1 = new TextField("Enter value: ", null, 120, TextField.ANY);
form1 = new Form(null, new Item[]{textField1});
form1.addCommand(commandOk1);
Display.getDisplay(this).setCurrent(form1);
}
/* There were some methods here pre-inserted by netbeans. */
/* I have not changed these, but I can post them if you need me too */
/* initialize() */
/* startMIDlet() */
/* resumeMidlet() */
/* switchDisplayable */
/* getDisplay() */
/* exitMidlet() */
/* startApp() */
/* pauseApp() */
/* destroyApp() */
public void commandAction(Command c, Displayable d) {
if (c == commandOk1)
{
System.out.println("Test");
}
}
}
que han estado tratando de resolver esto por lo menos una hora, sin que prevalezca. La única cosa que puedo pensar en la pena mencionar es:
- Netbeans mostraron una advertencia con la línea de Display.getDisplay (este) ..... diciendo que había una fuga en el constructor. Lo moví al método initialize() que sedado la advertencia, pero la excepción todavía ocurre.
Cualquier ayuda será muy apreciada.
Gracias, Tom.
Depurando por solo una hora? Tienes más en el tanque. En una nota seria, tome una respiración profunda y aléjese durante unas horas. Definitivamente lo obtendrás si alguien en SO no lo hace primero. – Mike
Se dice que Display.getDisplay (this) tiene fugas porque 'this' está escapando del constructor. Sin embargo, según la configuración de tu constructor, es poco probable que cause NullPointerEXception (ya que todo se ha inicializado) –