Here CustomMenu is a class which we create any number of menu and according to the tag value
=================StartUp.java================
package com.alishaik.custommenu;
public class StartUp extends UiApplication
{
public static void main(String[] ali)
{
StartUp theApp = new StartUp();
theApp.enterEventDispatcher();
}
public StartUp()
{
pushScreen(new FirstScreen());
}
public static void showAlertMessage(final String message)
{
UiApplication.getUiApplication().invokeLater(new Runnable()
{
public void run()
{
Dialog.alert(message);
}
});
}
}
=================FirstScreen.java================
package com.alishaik.custommenu;
public class FirstScreen extends MainScreen implements MenuInterface
{
private ButtonField clickButton;
private CustomMenu firstMenu1,firstMenu2;
public FirstScreen()
{
createGUI();
}
private void createGUI()
{
firstMenu1=new CustomMenu("First1", 100, 101, 1);
firstMenu1.setMenuListener(this);
addMenuItem(firstMenu1);
firstMenu2=new CustomMenu("First2", 100, 101, 2);
firstMenu2.setMenuListener(this);
addMenuItem(firstMenu2);
add(new LabelField("First Screen", Field.FOCUSABLE));
//ButtonField.CONSUME_CLICK if you are not writing this every screen menu shows.
clickButton=new ButtonField("Clik to go Next", Field.FOCUSABLE|ButtonField.CONSUME_CLICK);
clickButton.setChangeListener(new FieldChangeListener()
{
public void fieldChanged(Field field, int context)
{
UiApplication.getUiApplication().pushScreen(new SecondScreen());
}
});
add(clickButton);
}
public void onMenuPressed(String menuText, int tag)
{
StartUp.showAlertMessage("You Selected "+menuText);
if(tag==1)
{
//FirstMenu1 Selected;
}
else
{
//FirstMenu2 Selected;
}
}
protected boolean onSavePrompt()
{
return true;
}
}
=================SecondScreen.java================
package com.alishaik.custommenu;
public final class SecondScreen extends MainScreen implements MenuInterface
{
private ButtonField clickButton;
private CustomMenu secondMenu1,secondMenu2;
public SecondScreen()
{
createGUI();
}
private void createGUI()
{
secondMenu1=new CustomMenu("Second1", 100, 101, 1);
secondMenu1.setMenuListener(this);
addMenuItem(secondMenu1);
secondMenu2=new CustomMenu("Second2", 100, 101, 2);
secondMenu2.setMenuListener(this);
addMenuItem(secondMenu2);
add(new LabelField("Second Screen", Field.FOCUSABLE));
//ButtonField.CONSUME_CLICK if you are not writing this every screen menu shows.
clickButton=new ButtonField("Back button", Field.FOCUSABLE|ButtonField.CONSUME_CLICK);
clickButton.setChangeListener(new FieldChangeListener()
{
public void fieldChanged(Field field, int context)
{
UiApplication.getUiApplication().popScreen(SecondScreen.this);
return;
}
});
add(clickButton);
}
public void onMenuPressed(String menuText, int tag)
{
StartUp.showAlertMessage("You Selected "+menuText);
if(tag==1)
{
//SecondMenu1 Selected;
}
else
{
//SecondMenu2 Selected;
}
}
protected boolean onSavePrompt()
{
return true;
}
}
=================MenuInterface.java================
package com.alishaik.custommenu;
public interface MenuInterface
{
public void onMenuPressed(String menuText,int tag);
}
=================CustomMenu.java================
package com.alishaik.custommenu;
public class CustomMenu extends MenuItem
{
private MenuInterface menuInterface;
private String menuText;
private int tag;
public CustomMenu(String text, int ordinal, int priority, int tag)
{
super(text, ordinal, priority);
this.menuText=text;
this.tag=tag;
}
public void run()
{
menuInterface.onMenuPressed(menuText, tag);
}
public void setMenuListener(MenuInterface listener)
{
this.menuInterface=listener;
}
}
any doubts feel free to mail on alishaik001@gmail.com