首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Exception >

异常-Caused by: java.lang.NullPointerException,通过MIDlet类调用Form的派生类FormOfSMS

2014-01-26 
我通过MIDlet类调用Form的派生类FormOfSMS,初始化时this.addCommand(cmdOk)this.addCommand(cmdCancel)总

我通过MIDlet类调用Form的派生类FormOfSMS,初始化时this.addCommand(cmdOk);this.addCommand(cmdCancel);总是报异常Caused by: java.lang.NullPointerException
at java.util.Hashtable.get(Unknown Source)
at javax.microedition.lcdui.Display.getDisplay(Unknown Source)
at emulator.Emulator.getCurrentDisplay(Unknown Source)
at javax.microedition.lcdui.Displayable.addCommand(Unknown Source)
at FormOfSMS.initCommand(FormOfSMS.java:42)
at FormOfSMS. <init>(FormOfSMS.java:34)
at FriendsMIDlet. <clinit>(FriendsMIDlet.java:18)
... 3 more
说是空指针,可是我断点跟时候command是有内容的,小弟不解,望指点代码如下

import javax.microedition.lcdui.*;


public class FormOfSMS extends Form implements CommandListener
{
private TextField tf1 = null;

static Command cmdOk = null; //确定按钮
static Command cmdCancel = null; //取消按钮

public FormOfSMS()
{


super("发送短信");

tf1=new TextField("短信内容", null, 100,TextField.ANY);

this.append(tf1);



initCommand();
}

void initCommand()
{
cmdOk = new Command("确定", Command.OK, 1);
cmdCancel = new Command("取消", Command.OK, 1);

this.addCommand(cmdOk);
this.addCommand(cmdCancel);

this.setCommandListener(this);


FriendsMIDlet.disp.setCurrent(this);
}


public void commandAction(Command command, Displayable displayable)
{
  if (command == this.cmdOk)
  {
//  SMS();
  }
  else if(command == this.cmdCancel)
  {
//  Display.getDisplay(m).setCurrent(m.disp);
  }
}
}

------解决方法--------------------------------------------------------
disp是null,原因是因为MIDlet中代码的书写顺序,因为类中的属性初始化先于构造方法!

public static FormOfSMS dispSMS=null;

public static Display  disp=null;
//private splashCanvas sc ;

public FriendsMIDlet()
{
instance=this;
disp=Display.getDisplay(instance);
dispSMS=new FormOfSMS();

        

热点排行