2011-03-03 41 views
0

以下代碼運行正常,並彈出我可以鍵入的文本字段。手機模擬器左上角的軟鍵讓我可以改變輸入類型(從qwerty到數字等),但是每次按下左上角的按鈕時,我都會得到一個NullPointerException異常。這似乎發生在用這個軟鍵運行的任何Midlet上(將軟鍵的優先級較高的命令分配到右上角的輸入類型顯示器上,它可以正常工作!)帶有左軟鍵的MIDlet中的NullPointerException

我有點困惑,有沒有什麼明顯的我在這裏失蹤(可能)或者是否有一個錯誤/功能,我完全失蹤?我在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) 
+0

請給出完整的堆棧跟蹤 – 2011-03-03 14:14:59

回答

1

當我使用JAVA ME SDK 3.0時,它在我的模擬器中表現相同。

但是,當我使用Sun Java WTK 2.5.2 sdk甚至沒有「更改輸入類型按鈕」。

我查了實際設備中的密碼諾基亞5310音樂快車。它似乎工作正常,即我可以改變輸入類型,t9預測,更多的輸入符號等。

這是更改輸入類型按鈕是依賴於實現和行爲不同。在Java我SDK 3.0的情況下,它可能是一個錯誤。

1

我懷疑你已經發布的任何代碼行會擦出NullPointerException異常。

唯一的「潛力」,因爲我看到這將是

display.setCurrent(.... 

(檢查文檔getDisplay,以及是否可以返還null

我們希望能夠進一步幫助您如果你提供更多的上下文。

+0

感謝您的回答 - 不,getDisplay()不返回null,堆棧跟蹤似乎沒有指向我的代碼中的任何東西。我只是有點困惑,沒有人似乎偶然發現了這個問題,如果這是顯而易見的! – berry120 2011-03-03 14:20:17