代号一 - 使用动作事件和新的 GUI 生成器从表单 A 导航到表单 B - 并从 B 导航回 A

Codename one - Navigate from Form A to Form B with action events and new GUI builder - and navigate back from B to A

新 GUI Builder 的最佳实践是什么,通过单击 "form A" 中的按钮,使用操作事件从 "form A" 简单地导航到另一个 "form B"?

如果我像这样在表单 A 中创建表单 B

public void oncreateAccountActionEvent(com.codename1.ui.events.ActionEvent ev) {
        new FormB().show();
    }

然后我显然无法在 new FormB().show() 之前从主 class(启动、停止、销毁方法)内部修改表单 B。在这种情况下 new FormA().show(); 位于主要 class.

的启动方法中

我希望能够具体说明,例如返回表单 B 的后退按钮以导航回表单 A,但我想将其添加到 Main class.

的启动方法中

谢谢!

编辑:

我有 Main-class(有 start()、stop()、destroy() 方法),在这个 class 我做 new FormA().show().

但是在 FormA 的 class 中,我有 oncreateAccountActionEvent 方法(和按钮),它通过 new FormB().show().

显示 FormB

但是我希望能够指定 formB.setBackCommand()(进入 main-class 内的 FormB 的工具栏)。

所以说我想在主 class 和 new FormA/B() 中指定两种形式 - 然后修改形式,如向工具栏添加按钮 - 然后告诉 FormA 应该在里面使用 FormB动作事件方法。

使用 showBack() 方法从 FormB 返回到 FormA,如下面的代码所示。您可以只保留对 previous/next 表单实例的引用。

FormA formA = new FormA();
FormB formB = new FormB();

public void oncreateAccountActionEvent(com.codename1.ui.events.ActionEvent ev) {
   formB.show();
}

public void showFormA(){
   formA.showBack();
}

通过简单地覆盖 Main-class 中的 oncreateAccountActionEvent-方法,我找到了一个明显的解决方案,并且仍然能够在之前创建和修改 formB:

Form formB= new FormB();
// Modifying formB
formB.setBackCommand(backCommand);
...

//Create formA and show the modified formB on button click
FormA formA= new FormA() {
   @Override
   public void oncreateAccountActionEvent(ActionEvent ev) {
        //Navigate to FormB
        formB.show();
   };
};

为了从 formB 导航回 formA,我找到了这个解决方案,通过实施 formB 的 class 的 show()-方法来保持对先前表单的引用:

private Form previous;
...

public void show() {
        previous = Display.getInstance().getCurrent();
        super.show();
}
...
//go to the form before
public void goBack(){
        previous.showBack();
}

也许这对其他人也有帮助。