1

テキストフィールド(下位レベル)に、日付を取得してテキストフィールドの下位レベルに表示するためのデータフィールドを含む上位レベルのフォームを呼び出す関数を呼び出します。

問題は、日付フィールドが表示されるため、テキストフィールド(下位レベル)に戻れないことです。

public void formdatepicker() {


    final javax.microedition.lcdui.Command CONFIRM_COMMAND
            = new javax.microedition.lcdui.Command("OK",
            javax.microedition.lcdui.Command.OK, 1);
    javax.microedition.lcdui.Command CANCEL_COMMAND
            = new javax.microedition.lcdui.Command("Cancel",
            javax.microedition.lcdui.Command.CANCEL, 2);


    final DateField datefield = new DateField("Pick a date", DateField.DATE);
    form.append(datefield);
    form.addCommand(CONFIRM_COMMAND);
    form.addCommand(CANCEL_COMMAND);
    form.setCommandListener(new CommandListener() {                         
        public void commandAction(javax.microedition.lcdui.Command c, Displayable d) {
             if (c == CONFIRM_COMMAND) {
                Date date = datefield.getDate();
                display.setCurrent(null);// try to hide the current form to get 




             }                              
        }
    });

    Display.getInstance().getJ2MEDisplay().setCurrent(form);
4

1 に答える 1

0

あなたの間違いは何をするかについての間違った仮定setCurrent(null)です。質問とコードスニペットによると、以前に表示されていた画面が何らかの形で表示されることを期待しているようですform。そうではありません。APIjavadocs(オンラインで入手可能)の説明を参照してください。

アプリケーションは、setCurrent()の引数としてnullを渡す場合があります。これには、現在のDisplayableをnullに設定する効果はありません。代わりに、現在のDisplayableは変更されません。ただし、アプリケーション管理ソフトウェアは、この呼び出しを、バックグラウンドに配置することを要求しているアプリケーションからの要求として解釈する場合があります...

現在の画面の代わりにいくつかの画面を表示するために使用する場合はsetCurrent(Displayable)、この画面を引数としてに渡す必要がありますsetCurrent


完全を期すために、2つのパラメーターを受け入れる別のバージョンがあります。最初のバージョンはです。これは少し動作が異なりますが、notを使用しているため、このバージョンには適用できません。setCurrentAlertFormAlert

于 2012-08-28T21:06:54.847 に答える