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

标签 java java-me lcdui

我正在 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/

相关文章:

java - 有人可以解释一下吗? (运动无法正常工作)

java - 如何制作向用户显示图像而不是文本的下拉列表?

java-me - 创建原生位图库

java-me - j2me在 Canvas 之间切换时屏幕闪烁

java - 无法使用提供的 Gradle 包装器或系统 Gradle 构建新创建的 Grails 6.0.0 应用程序

java - 使用 Apache Shiro 设置自定义分布式缓存管理器?

java - Android或iPhone开发有必要学习J2ME吗?

java - 我想让 SMS AutoReply 使用 J2ME 程序

java-me - 如何在J2ME 中添加按钮?

java - Spring 3.0 MVC错误: Neither BindingResult nor plain target object for bean name 'login' available as request attribute