1

私はjavameを使用しており、フォームの表示可能オブジェクトを使用してアプリを作成しました。テキストフィールドアイテムへのユーザーの入力に基づいて、他のフォームに切り替えようとしています。たとえば、ユーザーがテキストフィールドに数字「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 に答える