3

我正在尝试在 midlet ( Main) 类之外创建一个可以设置屏幕上的内容的类(比如将表单设置为显示,等等。)
所以我想我必须输入并更改Main's 变量display,但我出错了。

这是整个程序:

//Main.java
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class Main extends MIDlet {

    public Other othr = new Other(this);
    public Display display = Display.getDisplay(this);
    public void startApp() {
        display.setCurrent(othr);
    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
    }
}


//Other.java
import javax.microedition.lcdui.*;
public class Other extends Canvas{

    Form a = new Form("a");
    public TextEdit(Main mc){
        //HERE IT IS!
        mc.display.getDisplay(mc).setCurrent(a);
        //If I comment out the above, I get no error.

    }
    protected void paint(Graphics g) {
         //Nothing yet
    }

}

而且我总是收到错误“应用程序已意外退出”

我也尝试用 替换mc.display.getDisplay(mc).setCurrent(a);Display.getDisplay(mc).setCurrent(a);然后没有显示错误,但是根本没有显示 Form a。

这可能是一个愚蠢的错误,但我迷路了

我能做些什么?

4

2 回答 2

3

这是您的代码中的一个小错误。在您的代码中进行更改,如下所示。

//Main.java
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class Main extends MIDlet {

    public Other othr ;
    public Display display ;
    public void startApp() {
         display= Display.getDisplay(this);
        othr=new Other(this);
        display.setCurrent(othr);
    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
    }
}

并检查您的 Other 看起来像这样,确保您想要的 Form 或 Canvas 都不同。

像这样形成你的代码

//Other.java
import javax.microedition.lcdui.*;
public class Other {

    Form a ;
    public Other(Main mc){
        //HERE IT IS!
       a=new Form("a");
        Display.getDisplay(mc).setCurrent(a);
        //If I comment out the above, I get no error.

    }

}

对于帆布检查这个

/Other.java
import javax.microedition.lcdui.*;
public class Other extends Canvas{

     public Other(Main mc){
        //HERE IT IS!
        Display.getDisplay(mc).setCurrent(this);
        //If I comment out the above, I get no error.

    }
    protected void paint(Graphics g) {
         //Nothing yet
    }

}

这将对您有所帮助,注意::检查 Canvas 和 Forms 之间的区别。

于 2012-04-25T05:12:40.013 回答
0

代替

 public Other othr = new Other(this);
 public Display display = Display.getDisplay(this);

public Other othr;
public Display display;

public Main()
{
  othr = new Other(this);
  display = Display.getDisplay(this)
}
于 2012-04-24T22:16:56.923 回答