MIDlet中的NullPointerException,带有左软键

时间:2011-03-03 14:12:04

标签: java java-me nullpointerexception midlet

以下运行正常并弹出一个我可以输入的文本字段。手机模拟器上的左上软键让我可以更改输入类型(从qwerty到数字等)但是每次按下这个左上角按钮我都会得到一个NullPointerException。任何使用该软键运行的Midlet似乎都会发生这种情况(为该软键指定一个具有更高优先级的命令会将输入类型显示推到右上角,它可以正常工作!)

我有点困惑,是否有一些显而易见的东西(可能),或者某个地方有一个我完全失踪的错误/特征?我在Windows XP上使用Netbeans 6.9.1。

public class Midlet extends MIDlet {

    private Display display;

    public void startApp() {
        display = Display.getDisplay(this);

        display.setCurrent(new Form("") {
            {
                append(new TextField("Label", "", 10, TextField.ANY));
            }
        });
    }

    public void pauseApp() {
    }

    public void destroyApp(boolean destroy) {
    }
}
编辑:哎呀,忘了堆栈跟踪:

TRACE: <at java.lang.NullPointerException:   0>, Exception caught in Display class
java.lang.NullPointerException:   0
        at javax.microedition.lcdui.Display$ChameleonTunnel.callItemListener(), bci=57
        at com.sun.midp.chameleon.layers.SoftButtonLayer.processCommand(), bci=57
        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:662)

2 个答案:

答案 0 :(得分:1)

我怀疑你发布的任何代码行都会产生NullPointerException。

我认为唯一的“潜力”是

display.setCurrent(....

(查看getDisplay的文档以及是否可以返回null

如果您提供了更多背景信息,我们将能够为您提供进一步的帮助。

答案 1 :(得分:1)

当我使用 JAVA ME SDK 3.0 时,我的模拟器中的行为相同。

但是当我使用 Sun Java WTK 2.5.2 sdk 时,甚至没有'更改输入类型按钮'。

我检查了真实设备中的代码诺基亚5310音乐快递。它似乎工作正常,但我可以改变输入类型,t9预测,更多输入符号等。

这就是更改输入类型按钮是依赖于实现的,并且表现不同。在java me sdk 3.0的情况下,它可能是一个错误。