2012-05-01 46 views
3

編輯:我相信我需要幫忙的我勉強
列表中選定的元素爲它顯示一個新的形式,但我有很多的麻煩找源碼爲
的代碼。



用命令的聽衆和新形式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絕對。謝謝。 –