【问题标题】:New Codename One bare-bones project to start a new project新的代号一个准系统项目开始一个新项目
【发布时间】:2021-10-14 01:02:22
【问题描述】:

我现在注意到通过 https://start.codenameone.com/ 获得的 Java 源代码发生了根本性的变化

显然我习惯于使用 init()、start()、stop()、destroy() 方法进行编码,我不知道如何处理这些新代码。它是否记录在某处?我没有在博客中看到任何内容。谢谢

Lifecycle 的 javadoc (https://www.codenameone.com/javadoc/com/codename1/system/Lifecycle.html) 不是很有帮助。它只是说:

实现 Codename One 生命周期的可选辅助类 具有合理默认实现的方法,以帮助保持样本 代码更小。

那么下面的代码只是我需要删除的示例,然后手动插入常用的init()、start()、stop()和destroy()方法?

public class MyDownloader extends Lifecycle {
    @Override
    public void runApp() {
        Form hi = new Form("Hi World", BoxLayout.y());
        Button helloButton = new Button("Hello World");
        hi.add(helloButton);
        helloButton.addActionListener(e -> hello());
        hi.getToolbar().addMaterialCommandToSideMenu("Hello Command",
        FontImage.MATERIAL_CHECK, 4, e -> hello());
        hi.show();
    }

    private void hello() {
        Dialog.show("Hello Codename One", "Welcome to Codename One", "OK", null);
    }

}

【问题讨论】:

    标签: codenameone


    【解决方案1】:

    这里讨论:https://www.reddit.com/r/cn1/comments/opifd6/a_new_approach_for_the_lifecycle_main_class/

    请注意,生命周期方法仍然存在,您可以根据需要覆盖它们,但大多数情况下您并不真正需要:

    当我们启动 Codename One 时,我们复制了 Java 中的约定 有一个非常冗长的生命周期类。这看起来不错 刚开始时的强大方法。关于核心决策的事情 就像那样,即使你最终接受了它们作为教条 是你自己做的。

    这太愚蠢了,我最近的commit 应该可以解决这个问题。 有了这个,您的主类可以从新的 Lifecycle 对象派生,并且 您将能够删除很多样板。例如。这将是 新的“Hello World”:

    public class MyApp extends Lifecycle {
        public void runApp() {
            Form hello = new Form("Hello", BoxLayout.y());
            hello.add(new Label("Hello World"));
            hello.show();
        }
    }
    

    这消除了我们大多数人在 生命周期类,同时仍然允许我们在需要时对其进行自定义 这样做。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-16
      • 2015-05-04
      • 1970-01-01
      • 2019-09-17
      相关资源
      最近更新 更多