2012-05-01 2 views
3

EDIT:Я считаю, что нужна помощь в получении выбранного элемента в списке я просто управляемый
для того, чтобы показать новую форму, но у меня много проблем найти код, который работает
с источником 3.0.



Confused командных слушателей и новые формы J2ME

Я пытался сделать приложение, которое позволяет пользователю выбрать дату затем добавить
и удалять события на основе выбранной даты. До сих пор я создал первый экран
, который является вариантом выбора для пользователя.
Эти опции:

  • Выбор даты
  • Добавить События
  • Удалить События
  • Обзор событий

Вопросы, я имею я не могу получить мою голову вокруг того, как для отображения новых форм на основе
выбранного элемента в списке. Я нашел небольшой учебник, который позволил мне добавить команду
прослушиватель, который показывает выбранный элемент, но у меня возникли проблемы с выяснением того, как он получает элемент
, выбранный в списке, и как я могу создать новую форму на основе выбранного элемента ?

Вот мой код.

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(); 
     } 
     } 
    } 
+0

вы рассматривали вывешивать новый вопрос вместо редактирования этого один (который, кажется, ответить, не так ли)? В SO-ответчиках, как правило, не нравятся [«вопросы хамелеона»] (http://meta.stackexchange.com/questions/43478/exit-strategies-for-chameleon-questions «связанное обсуждение в MSO») – gnat

ответ

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 
      //... 
     } 
    } 
+0

Полностью забыл о переключателе и корпусе , спасибо вам сейчас: D – Skeng

+1

Должно ли оно быть реализовано в случае продления? Кстати, я изменил его. –

+0

@NiteshVerma абсолютно. Благодарю. –

 Смежные вопросы

  • Нет связанных вопросов^_^