Codename 对话框中按钮的不同 class 一组动作事件

Codename One set action event from different class for button in dialog

我有一个 Android 应用程序,里面有一个对话框和几个按钮。

我想为不同的目的重用该对话框,并寻找一种从单独的 class 调用按钮并为其定义操作事件的方法。

创建测试 class,我成功地为表单内的按钮定义了一个动作事件,但同样的代码对对话框内的按钮不起作用,我无法理解围绕为什么它不适用于对话框。

下面是我已有的。任何建议,将不胜感激。

 public Class One {

    Test test = new Test();
    test.testOne();                        // this is working : button prints
    test.testTwo();                        // this is not working : button does not print
    buttonTest = test.getTestButton();
    buttonTest.setText("Hello World");     // not working for a button in a dialog
    buttonTest.addActionListener(l-> {     // prints when the button in a Form
        System.out.println("try");         // does not print when the button is in a dialog

    });
 }

public class Test {

    Dialog dialog = new Dialog();
    Form form = new Form();
    Button button;

    public void testOne() {

        button = new Button("Test");

        form.add(button);
        form.show();

    }

    public void testTwo() {

        button = new Button("Testing");

        dialog.add(button);
        dialog.show();

    }

    public Button getTestButton () {
        return button;
    }


}

您在显示表单和对话框后添加动作侦听器。这对表单来说不是问题,因为表单显示方法将继续。但是 dialogs show() 方法会阻塞。

两种解决方案:

  • 在代码中将侦听器绑定移动到更高的位置(在节目之前),这将是一个问题,因为该按钮尚不存在,因此您需要进行一些重构。

  • 将对话框中的 show() 调用更改为 showModless()