この場合、入力中であってもimeOnメソッドの処理自体は終了してしまうことに注意してください。つまり、入力中でもimeOn以降の処理が実行され、タイマーイベントも発生するということです。
66: switch (param) {
67: case Display.KEY_SOFT1 :
68: IApplication.getCurrentApp().terminate();
69: break;
70: case Display.KEY_SOFT2:
71: String str = message.equals("") ? "入力してね" : message;
72: imeOn(str, TextBox.DISPLAY_ANY, TextBox.KANA);
73: break;
74: }
入力が完了した時の処理は、processIMEEventをオーバーライドして記述します。入力が完了した場合には、第一引数にCanvas.IME_COMMITTEDが渡されます。これ以外の値を受け取った場合には、キャンセルなどの場合なので、処理を終了させます。
また、入力された文字列は、第二引数で渡されます。ここでは変数messageに受け取った値を設定しています。
109: public void processIMEEvent(int type, String text) {
110: if(type != Canvas.IME_COMMITTED) return;
111: message = text;
112: }
実行させてみます。ソフトキー2で入力開始です(画面37)。
入力画面に切り替わります。最初の状態ではimeOnメソッドの第一引数に指定した「入力してね」という文字列になっています(画面38)。
入力して確定します(画面39)。
入力した文字列が表示されます(画面40)。
この機能を利用すると、入力画面を自由に作りこむことができます。
Copyright © ITmedia, Inc. All Rights Reserved.