无效的属性错误

时间:2011-09-03 18:53:48

标签: java mobile java-me midp lcdui

我正在使用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) {


  }
}

2 个答案:

答案 0 :(得分:1)

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

Command对象永远不会被初始化,即'exit'为空

private Command exit;

答案 1 :(得分:0)

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

看起来你的MIDlet在未初始化的命令pointed to in previous answer有机会执行的错误代码之前就无法安装或启动。

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

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安装并启动OK,上面的代码将显示一个带有标题“form”和命令“Exit”的表单。如果没有发生这种情况,最好学习Eclipse文档来确定J2ME配置设置有什么问题。