title: J2ME button command not working
body: <p>I'm currently working on an j2me application and I'm having a hard time dealing with command button. Can someone please help me. The button was suppose to direct in a second form but when I click it, it's not working. Here's my code:</p>
  
  <pre><code>        import javax.microedition.midlet .*; 
          import javax.microedition.lcdui .*; 
          import javax.microedition.lcdui.StringItem;
          import javax.microedition.lcdui.TextField;
          import javax.microedition.lcdui.DateField;
          import javax.microedition.lcdui.Command;
          import javax.microedition.lcdui.Alert;
          import javax.microedition.pim.PIM;
          import javax.microedition.pim.PIMItem;
          import javax.microedition.pim.PIMException;
          import java.util.Date;
          import java.util.Enumeration;
          import javax.microedition.lcdui.Choice;
          import javax.microedition.lcdui.List;
          import javax.microedition.pim.ToDo;
          import javax.microedition.pim.ToDoList;
          import javax.microedition.lcdui.Displayable;
          import javax.microedition.lcdui.Display;
          import javax.microedition.lcdui.Form;
          import javax.microedition.lcdui.CommandListener;
  
          public class MainMidlet extends MIDlet implements CommandListener, 
          ItemCommandListener { 
  
          private Form aform, bform, addToDoForm; 
          private Command okCommand; 
          private Command exitCommand;
          private Command cmdAddTodo;
          private Command cmdretrieveTodo;
          private Command cmdExit;
          private Command backCommand;
          private Command hllinkCommand; 
          private Command b1Command, b2Command; 
          private Display aDisplay; 
          private StringItem hlstringItem,hlstringItem2; 
          private StringItem b1stringItem, b2stringItem, b1stringItem2, b2stringItem2;   
          private Alert hlAlert; 
          private Alert b1Alert, b2Alert;
          private TextField summaryField;
          // Date field for Due data of ToDo.
          private DateField dueDateField;
          // Date field for end data of ToDo.
          private TextField noteField;
          // Text field to set priority of ToDo.
          private TextField priorityField;
          private List listTodos;
          private ToDoList todoList;
          private ToDo todo;
  
          public MainMidlet () { 
          okCommand = new Command ( "OK", Command.OK, 1); 
          exitCommand = new Command ( "EXIT", Command.EXIT, 1);
          backCommand = new Command ( "BACK", Command.BACK, 1);
          hllinkCommand = new Command ( "LINK", Command.ITEM, 2); 
          b1Command = new Command ( "BUTTON", Command.ITEM, 2);
          b2Command = new Command ( "BUTTON", Command.ITEM, 2);
  
          aform = new Form ( "CyberMe");
  
          // if click hyperlink "here", display anAlert 
          hlstringItem = new StringItem (null, "here", Item.HYPERLINK); 
          hlstringItem.setItemCommandListener (this); 
          hlstringItem.setDefaultCommand (hllinkCommand); 
  
          b1stringItem = new StringItem (null, "Make ToDo", Item.BUTTON); 
          b1stringItem.setItemCommandListener (this); 
          b1stringItem.setDefaultCommand (b1Command);
  
          b2stringItem = new StringItem (null, "Set Alarm", Item.BUTTON); 
          b2stringItem.setItemCommandListener (this); 
          b2stringItem.setDefaultCommand (b2Command);
  
          /*hlstringItem2 = new StringItem (null, "here", Item.HYPERLINK); 
          hlstringItem2.setItemCommandListener (this); 
          hlstringItem2.setDefaultCommand (hllinkCommand); 
  
          b1stringItem2 = new StringItem (null, "Make ToDo", Item.BUTTON); 
          b1stringItem2.setItemCommandListener (this); 
          b1stringItem2.setDefaultCommand (b1Command);
  
          b2stringItem2 = new StringItem (null, "Set Alarm", Item.BUTTON); 
          b2stringItem2.setItemCommandListener (this); 
          b2stringItem2.setDefaultCommand (b2Command);*/
  
  
          hlAlert = new Alert ( "Item.HYPERLINK", "You Can Call Me 800-8101234" 
          , null, AlertType.INFO); 
          b1Alert = new Alert ( "Item.Button", "You click ToDo!" 
          , null, AlertType.INFO);
          //b2Alert = new Alert ( "Item.Button", "You click Alarm!" 
          //, null, AlertType.INFO);
  
  
          aform.append ( "What do you want to do?"); 
          aform.append (hlstringItem); 
          aform.append (b1stringItem);
          aform.append (b2stringItem);
  
          aform.addCommand (okCommand); 
          aform.addCommand (exitCommand); 
          aform.setCommandListener (this); 
  
          /*bform.append ( "What do you want to do?"); 
          bform.append (hlstringItem2); 
          bform.append (b1stringItem2);
          bform.append (b2stringItem2);
  
          bform.addCommand (okCommand); 
          bform.addCommand (backCommand); 
          bform.setCommandListener (this); */
  
          }
  
          /*public void SecondPage(){
          if(checkPIMSupport() == false) {
          exitMIDlet();
          }
  
          setComponents();
          }
  
          /**
          * Initializes components of MIDlet.
          */
          public void setComponents() {
  
          aDisplay = Display.getDisplay(this);
  
          // Create form for adding ToDo.
          addToDoForm = new Form("ToDo");
  
          // Add commands to form and set listener for it.
          cmdAddTodo = new Command("Add Todo", Command.SCREEN, 0);
          cmdretrieveTodo = new Command("Retrieve All Todos", Command.SCREEN, 0);
          addToDoForm.addCommand(cmdAddTodo);
          addToDoForm.addCommand(cmdretrieveTodo);
  
          cmdExit = new Command("Exit", Command.EXIT, 0);
          addToDoForm.addCommand(cmdExit);
  
          addToDoForm.setCommandListener(this);
          listTodos = new List("ToDo list", Choice.IMPLICIT);
          backCommand =new Command("Back", Command.BACK, 0);
          listTodos.addCommand(backCommand);
          listTodos.setCommandListener(this);
  
          try {
  
          StringBuffer supported = new StringBuffer();
  
          // Get list of ToDos.
          todoList = (ToDoList)PIM.getInstance().openPIMList(
          PIM.TODO_LIST, PIM.READ_WRITE);
  
          // Create controls based on supported fields for ToDo.
          if(todoList.isSupportedField(ToDo.SUMMARY) == true) {
          summaryField = new TextField("Summary", null, 20,
                                  TextField.ANY);
          addToDoForm.append(summaryField);
          } 
  
          else {
  
          supported.append("Summary field\n");
          removeCommand();
  
          }
  
          if(todoList.isSupportedField(ToDo.DUE) == true) {
          dueDateField = new DateField("Date",
                                  DateField.DATE_TIME);
          dueDateField.setDate(new Date());
          addToDoForm.append(dueDateField);
  
          }
  
          else {
  
          supported.append("Due date field\n");
          removeCommand();
  
          }
  
  
          if(todoList.isSupportedField(ToDo.NOTE) == true) {
          noteField = new TextField("Information", null, 20, TextField.ANY);
          addToDoForm.append(noteField);
          }
  
          else {
  
          supported.append("Note field\n");
          }
  
          if(todoList.isSupportedField(ToDo.PRIORITY) == true) {
          priorityField = new TextField("Priority", null, 20,
                                  TextField.NUMERIC);
  
          addToDoForm.append(priorityField);
          }
          else {
  
          supported.append("Priority field\n");
          removeCommand();
          }
  
          if(supported.length()!=0){
  
              StringItem si = new StringItem("ToDo field not supported", "");     
              si.setText(supported.toString());
              addToDoForm.append(si);
          }
  
  
          } catch(PIMException pimExc) {
          // TODO: Handle error on working with PIM.
          }
          catch(SecurityException secExc) {
          // TODO: Handle error on access to PIM.
          }
          catch(Exception exc) {
          // If unknown error was caught, show it to the end user.
          showAlert("Info", exc.toString());  
          }
  
          }
  
          // Remove the command for adding ToDos
          public void removeCommand(){
          addToDoForm.removeCommand(cmdAddTodo);
          }
  
          public void listToDos() {
  
          Enumeration todos = null;
  
          try {
          todoList = (ToDoList) PIM.getInstance().openPIMList(PIM.TODO_LIST, PIM.READ_WRITE);
  
          } catch (PIMException e) {
          // Cannot open ToDo list
          showAlert("Info", "Failed to open a ToDo list: "+e.toString());  
          return;
          } catch (SecurityException e) {
          // User rejects application's request for reading ToDo list
          showAlert("Info", "Reading ToDo List rejected: "+e.toString());  
          return;
          }
  
          try {
          // Get the enumeration of all ToDo elements
          todos = todoList.items();
  
          } catch (PIMException e) {
          // Failed to retrieve elements
          showAlert("Info", "This application cannot retrieve ToDos: "+e.toString());  
          }
  
          if (listTodos.size() &gt; 0) {
          listTodos.deleteAll();
          }
  
          while (todos.hasMoreElements()) {
          todo =  (ToDo) todos.nextElement();
          String todoInfo = null;
          try {
          todoInfo = todo.getString(ToDo.SUMMARY, PIMItem.ATTR_NONE);
  
          } catch (Exception ex) {
          showAlert("Info",ex.getMessage());
          continue;
          }
          if (todoInfo != null) {
          listTodos.append(todoInfo, null);
          }          
          }
          }
  
          /**
          * Checks PIM support.
          * @return - true if PIM is supported, false otherwise.
          */
  
          private boolean checkPIMSupport() {
          String propValue = System.getProperty("microedition.pim.version");
          if(propValue != null) {
          return true;
          } else {
          return false;
          }
          }
  
  
  
          private void getToDoList() {
          listToDos();
          aDisplay.setCurrent(listTodos);
          }
  
          /**
          * Adds ToDo to list of ToDos.
          * Gets data for ToDo from addToDoForm controls.
          */
          private void addToDo() {
  
          try {
  
          // Get list of ToDos.
          todoList = (ToDoList)PIM.getInstance().openPIMList(
          PIM.TODO_LIST, PIM.READ_WRITE);
  
          // Create new ToDo.
          todo = todoList.createToDo();
  
          // Get data from controls
          if(todoList.isSupportedField(ToDo.SUMMARY) == true) {
  
          if(summaryField.size()==0){
  
          showAlert("Info", "Summary missing, please enter a summary");
          return;
          }
          String summary =summaryField.getString();
          todo.addString(ToDo.SUMMARY, PIMItem.ATTR_NONE, summary);
          } else {
          // At least summary must be supported.
          closeToDoList();
          showAlert("Info", "Summary field for ToDo is not supported");
          }
  
          if(todoList.isSupportedField(ToDo.DUE) == true) {
          long startDate = dueDateField.getDate().getTime();
          todo.addDate(ToDo.DUE, PIMItem.ATTR_NONE, startDate);
          }   
  
          if(todoList.isSupportedField(ToDo.NOTE) == true) {
          String note = noteField.getString();
          todo.addString(ToDo.NOTE, PIMItem.ATTR_NONE, note);
          }
  
          if(todoList.isSupportedField(ToDo.PRIORITY) == true) {
  
          if(priorityField.size()==0){
  
          showAlert("Info", "Priority is missing, please enter a priority");
          return;
          }
  
          else {
  
              String  location = priorityField.getString();
              int i=Integer.parseInt(location);              
  
              if(i &gt; 9){
  
              showAlert("Info","Priority exceeded, please enter a priority between 0-9");
                      return;
              }                
  
              todo.addInt(ToDo.PRIORITY, PIMItem.ATTR_NONE, i);           
          }
          }
  
          // Commit ToDo.
          todo.commit();
  
          // Notify user that ToDo was added
          showAlert("Info", "ToDo was successfully added");  
  
          } catch(PIMException pimExc) {
          // TODO: Handle error on working with PIM.
          showAlert("Info", pimExc.getMessage());
          }
          catch(SecurityException secExc) {
          // TODO: Handle error on access to PIM.
          showAlert("Info", secExc.getMessage());
          }
  
          catch(Exception exc) {
  
          // TODO: Handle all other errors.
          showAlert("Info", exc.toString());
  
          }
  
          }
  
          /**
          * Shows alert with specified title and text.
          * @param title - Title of alert.
          * @param message - text of alert.
          */
          private void showAlert(String title, String message) {
          Alert alert = new Alert(title);
          alert.setString(message);
          alert.setTimeout(2000);
          aDisplay.setCurrent(alert);
          }
  
          /**
          * From MIDlet.
          * Signals the MIDlet that it has entered the Active state.
          */
  
  
          public void startApp () { 
          aDisplay = Display.getDisplay (this); 
          aDisplay.setCurrent (aform); 
  
  
          } 
  
          public void pauseApp () { 
          } 
  
          public void destroyApp (boolean unconditional) {
  
          } 
          private void exitMIDlet() {
          notifyDestroyed();
          }
  
          private void closeToDoList() {
          if (todoList != null) {
          try {
  
          todoList.close();
          } catch (PIMException ex) {
          showAlert("Info","Error in closing ToDo list: "+ex.toString());
          }
          }
          todoList = null;
          }
          public void commandAction (Command c, Displayable d) { 
  
          if (c == exitCommand) { 
          destroyApp (false); 
          notifyDestroyed (); 
          } 
          if(c == backCommand){ 
          aDisplay.setCurrent(aform);
          } 
          }
  
          public void commandAction (Command c, Item i) { 
  
          if (c == hllinkCommand) { 
          aDisplay.setCurrent (hlAlert, aform); 
          } 
          if (c == b1Command) { 
          aDisplay.setCurrent (b1Alert, aform); 
          }
          if (c == b2Command){
          aDisplay.setCurrent (addToDoForm);
          }
  
          } 
          }
  </code></pre>