代号一-以编程方式在搜索栏中开始编辑

时间:2018-07-18 09:15:02

标签: codenameone

显示表单时,我需要以编程方式开始在搜索栏中进行编辑。因为我没有为此找到任何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?

1 个答案:

答案 0 :(得分:1)

如果需要在显示之前对其进行初始化,则可能需要与Form.setEditOnShow()类似的详细说明。

当我启动它时,这在我脑海中似乎更简单一些,但是一旦开始,我必须完成操作,因此我在这里实现了此操作:https://github.com/codenameone/CodenameOne/commit/86fea99196dd5a453988ede8217e0809e529469a

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