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 回答