NullPointerException в мидлете с левой софт-клавишей - PullRequest
0 голосов
/ 03 марта 2011

Следующая команда работает нормально и выдает текстовое поле, в которое я могу ввести.Верхняя левая программная клавиша на эмуляторе телефона позволяет мне изменять тип ввода (с qwerty на числовой и т. Д.), Однако каждый раз, когда я нажимаю эту верхнюю левую кнопку, я получаю исключение NullPointerException.Похоже, это происходит с любым Midlet, работающим с этой функциональной клавишей (назначение команды с более высоким приоритетом для функциональной клавиши сдвигает отображение типа ввода в верхнем правом углу, где оно работает отлично!)

Янемного сбит с толку, есть ли что-то очевидное, что я здесь упускаю (скорее всего) или есть ошибка / функция где-то, что я полностью отсутствует?Я использую Netbeans 6.9.1 в Windows XP.

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 ]

1 голос
/ 05 марта 2011

В моем эмуляторе происходит то же самое, когда я использую JAVA ME SDK 3.0 .

Но когда я использую Sun Java WTK 2.5.2 sdk , даже нет кнопки «изменить тип ввода».

Я проверил код в реальном устройстве Nokia 5310 Music Express . Кажется, он работает нормально, т. Е. Я могу изменить тип ввода, прогноз t9, больше символов ввода и т. Д.

То есть кнопка изменения типа ввода зависит от реализации и ведет себя по-разному. В случае java me sdk 3.0 это может быть ошибка.

1 голос
/ 03 марта 2011

Я сомневаюсь, что любые строки кода, которые вы разместили, приведут к появлению NullPointerException.

Единственный "потенциал", как я вижу, будет

display.setCurrent(....

(проверьтедокументация для getDisplay и может ли она возвращаться null)

Мы сможем помочь вам, если вы предоставите больше контекста.

...