我正在使用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) {
}
}
答案 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配置设置有什么问题。