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」はnullです。

private Command exit;
于 2011-09-03T20:05:24.617 に答える
0

attribute... errorの値は、 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 に答える