Java me (J2ME)从其他类获取MIDlet的引用?

Java me (J2ME)从其他类获取MIDlet的引用?,java-me,midp,midlet,lcdui,Java Me,Midp,Midlet,Lcdui,我试图在midlet(Main)类之外创建一个类,该类可以设置屏幕上的内容(如设置显示的表单等)。 因此,我认为我必须输入并更改Main的变量display,但出现了一个错误 以下是整个计划: //Main.java import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class Main extends MIDlet { public Other othr = new Other(

我试图在midlet(
Main
)类之外创建一个类,该类可以设置屏幕上的内容(如设置显示的表单等)。
因此,我认为我必须输入并更改
Main
的变量
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) {
    }
}

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

我还尝试替换
mc.display.getDisplay(mc.setCurrent(a)Display.getDisplay(mc).setCurrent(a)的code>,则不显示错误,但完全不显示表单a

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

我能做什么?

替换

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


这是你代码中的一个小错误。对代码进行如下更改

//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.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
    }

}

这将帮助您,注意::检查画布和表单之间的差异。

是的,这就是解决方案。很可能是在创建display之前就执行了Other()构造函数。萨克斯
//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
    }

}