3

編集:新しいフォームを表示するために 管理したリストで選択した要素を取得するのに助けが必要だと思いますが、ソース 3.0
で動作するコードを見つけるのに苦労しています。




ユーザーが日付を選択し、選択した日付に基づいてイベントを追加および削除できるアプリケーションを作成しようとしています。
これまでのところ、ユーザーが選択できるオプションのリストである最初の画面を作成しました。
これらのオプションは次のとおりです。

  • 日付を選択
  • イベントを追加
  • イベントを削除
  • イベントをブラウズ

私が抱えている問題は
、リストで選択されたアイテムに基づいて新しいフォームを表示する方法を理解できないことです。選択したアイテムを表示するコマンド リスナーを追加できる小さなチュートリアルを見つけましたが、リストで選択したアイテムを取得する方法と、選択したアイテムに基づいて新しいフォームを作成する方法を
理解するのに苦労していますか?

これまでの私のコードは次のとおりです。

    import javax.microedition.lcdui.Alert;
    import javax.microedition.lcdui.AlertType;
    import javax.microedition.lcdui.Command;
    import javax.microedition.lcdui.CommandListener;
    import javax.microedition.lcdui.Display;
    import javax.microedition.lcdui.Displayable;
    import javax.microedition.lcdui.List;
    import javax.microedition.lcdui.Form;
    import javax.microedition.midlet.MIDlet;

    public class mainMidlet extends MIDlet implements CommandListener {

      private Display display;
      private List list = new List("Please Select a Option", List.IMPLICIT);
      private Command select = new Command("Select", Command.SCREEN, 1);
      private Form form;
      Alert alert;

      public mainMidlet() {
        display = Display.getDisplay(this);   

        list.append("Select Date", null);
        list.append("Add Events", null);
        list.append("Remove Events", null);
        list.append("Browse Events", null);
        list.addCommand(select);
        list.setCommandListener(this);

      }

      public void startApp() {
        display.setCurrent(list);
      }

      public void pauseApp() {
      }

      public void destroyApp(boolean unconditional) {
      }

      public void commandAction(Command command, Displayable displayable) {
        if (command == List.SELECT_COMMAND) {
          String selection = list.getString(list.getSelectedIndex());
          alert = new Alert("Option Selected", selection, null, null);
          alert.setTimeout(Alert.FOREVER);
          alert.setType(AlertType.INFO);
          display.setCurrent(alert);
        } else if (command == select) {
          destroyApp(false);
          notifyDestroyed();
        }
      }
    }
4

1 に答える 1

4

複数のフォームを追加して、それらを切り替えることができます

  public void commandAction(Command command, Displayable displayable) {
      if (displayable == list) {
          if (command == List.SELECT_COMMAND) {
              switch (list.getSelectedIndex()) {
                  case 0: // select date
                      display.setCurrent(someForm);
                      break;
                  case 1: //add events
                      display.setCurrent(someOtherForm);
                      break;
              }
          } else if (command == select) {
             destroyApp(false);
             notifyDestroyed();
          }
      }
      if (displayable == someForm) {
          //but it's better practice to make each form a different class implementing CommandListener and it's own commandAction. And leave the display public static in MIDlet class
          //...
      }
  }
于 2012-05-01T14:38:20.510 に答える