1

我正在使用 JavaMe。

每次我尝试初始化 List 对象时,都会收到以下错误:

属性 null 的值格式不正确

我在 Mac OSX Lion 上使用 Eclipse 和 JRE 6。

这是我的简单代码:

import javax.microedition.midlet.MIDlet;
import javax.microedition.lcdui.*;

public class ListTest extends MIDlet implements CommandListener {

private Display display;
private List optionsItem;
private Command exit;

public ListTest(){
    optionsItem = new List("List types of Item", Choice.IMPLICIT);

}

protected void startApp() {
        display = Display.getDisplay(this);
        optionsItem.append("TextField",null);
        optionsItem.addCommand(exit);
        optionsItem.setCommandListener(this);
        display.setCurrent(optionsItem);
}

public void pauseApp() {

}

public void destroyApp(boolean unconditional) {
  notifyDestroyed();
}

public void commandAction(Command c, Displayable d) {


  }
}
4

2 回答 2

1

您是否正确初始化了成员变量?

Command 对象从未初始化,即“exit”为空

private Command exit;
于 2011-09-03T20:05:24.617 回答
0

属性的值...错误似乎指向MIDlet JAD中的一些问题。

即使在先前答案中指向的带有未初始化命令的错误代码有机会执行之前,您的 MIDlet 似乎也无法安装或启动。

要调试这样的问题,我会使用可能工作的最简单的代码。就像这样说:

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class SmokeTest extends MIDlet {

    protected void startApp() {
        Display display = Display.getDisplay(this);
        Form form = new Form("form");
        form.addCommand(new Command("Exit", Command.EXIT, 1));
        form.setCommandListener(new CommandListener() {
            public void commandAction(Command c, Displayable d) {
                notifyDestroyed();
            }
        });
        display.setCurrent(form);
    }

    protected void pauseApp() { }

    protected void destroyApp(boolean unconditional) {
        notifyDestroyed();
    }
}

如果 MIDlet 安装并启动正常,上面的代码将显示一个带有标题“form”和命令“Exit”的表单。如果这没有发生,最好研究 Eclipse 文档以找出 J2ME 配置设置有什么问题。

于 2011-09-04T21:32:02.597 回答