我正在 java me 中工作,我正在尝试使用 ok 命令和 back 命令在视觉设计之间切换。我有一个可显示的表单,在我的主类 A.java
中命名为 formA
,在另一个类 B.java< 中命名为
。我在 formB
/formA
中使用了 ok 命令,在选择该命令时,应该将用户带到 formB
。起初,当我尝试从主类调用 getFormB 方法时,它不起作用(无法从静态上下文引用非静态方法)。
有人建议我创建对 B.java 的引用,因此我在主类 A.java
B b = new B(this);
现在我可以从 formA
中的 commandAction 调用 getFormB 方法。此时,一切正常,但是当我尝试添加一个 backCommand 应该带我回到 A.java
中的 formA
时,我再次收到 ds 错误“non-”静态方法 getFormA()
无法从静态上下文中引用',因此我尝试在 B.java
中创建引用,就像在 A.java< 中所做的那样
,这是代码:
A a = new A();
然后在命令操作中我在后面做了 ds 命令:
switchDisplayable(null, a.getFormA());
这一次,编译没有错误。但在运行时我收到 SecurityException MIDlet Manager 错误:
Illegal attempt to construct hello.A@e938beb1
'hello' 是包含两个 java 文件的包。
谁能帮帮我吗?
最佳答案
看来您的 A 类扩展了 MIDlet。如果是这种情况,您不应尝试创建它的新实例。
您应该向 B 类添加 A 属性,并接收实例作为构造函数参数或具有 setter 方法。
这样您就可以从属性中调用 getFormA() 方法。
更新
public class A extends MIDlet {
B b;
public A() {
b = new B(this);
}
}
class B {
A a;
B(A a) {
this.a = a;
}
public void commandAction(Command c, Displayable d) {
switchDisplayable(null, a.getFormA());
}
}
关于java - 如何切换到具有 main 方法的 Displayable 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14422490/