【问题标题】:Codename One - addActionListener of a Picker代号一 - Picker 的 addActionListener
【发布时间】:2018-04-06 20:24:10
【问题描述】:

以下代码在很多版本的 Android 和 iOS 中显示“取消”和“确定”选项。我希望只有当用户点击“确定”按钮时才会执行 addActionListener 代码。目前,即使用户点击“取消”按钮,该代码也会执行:

    Form hi = new Form("Hi World", BoxLayout.y());
    Picker languagePicker = new Picker();
    languagePicker.setType(Display.PICKER_TYPE_STRINGS);
    languagePicker.setStrings("Italian", "English", "German");
    languagePicker.setSelectedString("English");
    languagePicker.addActionListener((ev) -> {
        String newLanguage = languagePicker.getSelectedString();
        if (newLanguage != null && newLanguage.length() > 0) {
            Log.p("Language selected: " + newLanguage);
        }
    });
    hi.add(languagePicker);
    hi.show();

【问题讨论】:

    标签: codenameone


    【解决方案1】:

    Picker 是本机组件。因此,我们在使用它时没有那种级别的访问权限或一致性。请记住,在某些形式中,它甚至没有元素列表,因此我们的控制非常有限。

    【讨论】:

      【解决方案2】:

      我在几个 Android 设备上使用了选择器,它们按预期工作,这意味着只有在按下 OK 按钮时才会执行该操作。

      按下取消按钮不会产生任何动作。

      不过,我可以在模拟器中重现错误。

      您是否在设备上尝试过?

      【讨论】:

      • 是的,我在真实设备上确认了这种行为。请注意,之前的代码应该可以在所有 Codename One 支持的设备上运行和测试,而不仅仅是 Android。你在使用代号一吗?
      • 是的,我正在使用 CN1 .... 我已经构建了一个广泛使用选择器的日历应用程序。也许设备之间存在差异......
      • 奇怪的是我有这个问题而你没有。我希望 Shai Almog 可以写一些澄清......也许是一个解决方案:)
      • 这是个问题吗?哪种类型的设备。选择器实现因设备/操作系统版本而异。我建议提交问题而不是答案,因为否则我看不到它们。
      • 你说得对,我还不够清楚。我刚刚写了一个新的(更清楚的?)问题:stackoverflow.com/questions/49733763/…
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-28
      • 1970-01-01
      相关资源
      最近更新 更多