1

我正在使用 java me,我使用表单可视组件构建了一个应用程序。我正在尝试根据用户在文本字段项目中的输入切换到其他形式。例如,我希望用户能够在文本字段中输入数字“1”,然后被带到 form1 或输入“2”并被带到 form2 等。

执行此操作的代码是什么?

这是我所做的,但它没有按预期工作:

form.setItemStateListener(new ItemStateListener() {


            public void itemStateChanged(Item item) {
                if (item == TextField) {
                     if ("1".equals(TextField.getString())) {
                        switchDisplayable(null, form1);
              }   
           }   
}

我已经按照建议做了。我在文本字段项中添加了一个命令并监听它以读取文本字段内容,然后将内容作为字符串进行比较,以切换表单。请参阅下面的代码,仍然无法正常工作。我想也许我遗漏了一些东西,或者我的逻辑不正确。

        form.setCommandListener(new CommandListener() {

            public void commandAction(Command command, Displayable displayable) {
                if (command == getTextFieldItemCommand()) {
                    if ("1".equals(TextField.getString())) {
                        switchDisplayable(null, form1);
                    } else if ("2".equals(TextField.getString())){
                        switchDisplayable(null, form2);
                    }
                }
            }
4

1 回答 1

1

看起来您希望itemStateChanged在您觉得方便时调用方法,例如在文本字段中的每个字符输入处。

上述预期是错误的, API javadocs中解释了指定的行为:

由设备决定何时认为已将新值输入到项中...通常,不期望在每次更改后都调用侦听器...

如上所述,使用itemStateChanged您想要的方式几乎没有意义,请考虑更改 MIDlet 的设计。


我可能只是Go在表单或文本字段中添加一个命令和命令侦听器,并在用户调用该命令以找出他们想要切换到的可显示内容时读取文本字段内容。

于 2012-12-27T14:38:24.273 回答