【问题标题】:Codename One - Start editing in the search bar programmatically代号一 - 以编程方式在搜索栏中开始编辑
【发布时间】:2018-07-19 12:29:58
【问题描述】:

显示表单时,我需要以编程方式在搜索栏中开始编辑。因为我没有找到任何 API,所以我在 Form 中编写了这段代码:

 addShowListener(l -> {
        for (int i = 0; i <= getToolbar().getComponentCount(); i++) {
            if (getToolbar().getComponentAt(i) instanceof Button) {
                Button btn = (Button) getToolbar().getComponentAt(i);
                if (btn.getUIID().equals("TitleCommand")) {
                    btn.pressed();
                    btn.released();
                }
                if (btn.getUIID().equals("BackCommand")) {

                    btn.addActionListener(ev -> {
                        backForm.showBack();
                    });
                }
            }
        }

    });

这段代码的问题:

  • 它依赖于方法Form.getToolbar().addSearchCommand的当前实现,该方法在工具栏中创建了一个UIID为TitleCommand的按钮(右侧的搜索图标)和另一个UIID为BackButton的按钮(左侧的箭头)。
  • 我添加到后退按钮的监听器不起作用:它没有显示backForm,而是显示没有搜索栏的工具栏。

所以...我的问题是如何通过更好的编码来实现我所需要的。是否有必要进行 RFE 来公开像 Toolbar.startSearchEditingAsync() 这样的 API?以及如何更改backButton的默认actionListener?

【问题讨论】:

    标签: codenameone


    【解决方案1】:

    如果您需要在显示之前启动它,您可能需要更详细的内容,类似于Form.setEditOnShow()

    当我开始时,这在我的脑海中似乎有点简单,但一旦开始我就必须完成,所以我在这里实现了这个:https://github.com/codenameone/CodenameOne/commit/86fea99196dd5a453988ede8217e0809e529469a

    它应该可以工作,如果有问题请告诉我。

    【讨论】:

    • 干得好,谢谢!我将评论您的承诺,以报告有关后退按钮的(小)问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多