gpt4 book ai didi

java - 如何切换到具有 main 方法的 Displayable 类

转载 作者:行者123 更新时间:2023-11-30 09:27:42 25 4
gpt4 key购买 nike

我在 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 管理器错误:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com