5

Java ME midlet で使用する yes/no ダイアログの簡単なソリューションを探しています。このように使いたいのですが、他の方法でも構いません。

if (YesNoDialog.ask("Are you sure?") == true) {
  // yes was chosen
} else {
  // no was chosen
}
4

2 に答える 2

7

アラートが必要です:

アラートは、ユーザーにデータを表示し、次の Displayable に進む前に一定時間待機する画面です。アラートには、テキスト文字列と画像を含めることができます。Alert の使用目的は、エラーやその他の例外的な状況についてユーザーに通知することです。

2つのコマンド(あなたの場合は「はい」/「いいえ」):

アラートに 2 つ以上のコマンドが存在する場合、自動的にモーダル アラートになり、タイムアウト値は常に FOREVER になります。コマンドが呼び出されるまで、アラートは画面に表示されたままになります。

これらは、MIDP 1.0 以降でサポートされている組み込みクラスです。また、コード スニペットは機能しません。このような API は、ユーザーが選択して応答するのを待っている呼び出しスレッドをブロックする必要があります。これは、コールバックと委任に基づく MIDP の UI 対話モデルとは正反対です。CommandListenerを実装する独自のクラスを提供し、非同期実行用にコードを準備する必要があります。

Alert に基づく (テストされていない) クラスの例を次に示します。

public class MyPrompter implements CommandListener {

    private Alert yesNoAlert;

    private Command softKey1;
    private Command softKey2;

    private boolean status;

    public MyPrompter() {
        yesNoAlert = new Alert("Attention");
        yesNoAlert.setString("Are you sure?");
        softKey1 = new Command("No", Command.BACK, 1);
        softKey2 = new Command("Yes", Command.OK, 1);
        yesNoAlert.addCommand(softKey1);
        yesNoAlert.addCommand(softKey2);
        yesNoAlert.setCommandListener(this);
        status = false;
    }

    public Displayable getDisplayable() {
        return yesNoAlert;
    }

    public boolean getStatus() {
        return status;
    }

    public void commandAction(Command c, Displayable d) {
        status = c.getCommandType() == Command.OK;
        // maybe do other stuff here. remember this is asynchronous
    }

};

それを使用するには(繰り返しますが、テストされておらず、私の頭の上にあります):

MyPrompter prompt = new MyPrompter();
Display.getDisplay(YOUR_MIDLET_INSTANCE).setCurrent(prompt.getDisplayable());

このコードは、プロンプトをアプリで現在表示されているフォームにしますが、投稿した例のようにスレッドをブロックしません。実行を継続し、commandAction の呼び出しを待つ必要があります。

于 2008-09-15T13:51:59.657 に答える
-2

Java ME でプログラミングしたことはありませんが、オプション パッケージの Advanced Graphics and User Interface APIのリファレンスを見つけました。Java SE API のように、 JOptionPane クラスでこれらのダイアログを作成するために使用されます。

int JOptionPane.showConfirmDialog(java.awt.Component parentComponent, java.lang.Object >message, java.lang.String title, int optionType)

戻り値 はJOptionPane.YES_OPTION、、、...JOptionPane.NO_OPTIONJOptionPane.CANCEL_OPTION

于 2008-09-11T15:56:19.733 に答える