Java me (J2ME)从其他类获取MIDlet的引用?
我试图在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(
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
}
}