我在新类中创建了一个自定义菜单,扩展了popupScreen。当菜单显示菜单按钮上的用户时钟时,我就去了。我用这个代码
protected boolean keyDown(int keycode, int time) {
if(Keypad.KEY_MENU == Keypad.key(keycode))
{
UiApplication.getUiApplication().popScreen(getScreen());
Menu popup = new Menu();
UiApplication.getUiApplication().pushScreen(popup);
return true;
}
else
return super.keyDown(keycode, time);
}
但是我在这行上获得了错误UiApplication.getUiApplication()。pushScreen(popup);由pushScreen导致。如何更改此代码,或者有另一种方法来显示此菜单。
答案 0 :(得分:1)
试试这个
protected boolean keyDown(int keycode, int time) {
if(Keypad.KEY_MENU == Keypad.key(keycode))
{
synchronized (UiApplication.getEventLock())
{
UiApplication.getUiApplication().popScreen(getScreen());
Menu popup = new Menu();
UiApplication.getUiApplication().pushScreen(popup);
}
return true;
}
else
return super.keyDown(keycode, time);
}
答案 1 :(得分:0)
在Blackberry中,系统会处理菜单的创建,显示和隐藏;您将在适当的时候获得回调。您需要编码的回调是:
public boolean onMenu( int instance )
{
return true; // Menu is created
}
public void makeMenu( Menu menu, int instance )
{
MenuItem _desired_menu_item = new MenuItem()
{
public void run()
{
}
}
menu.add( _desired_menu_item );
super.makeMenu( menu, instance)
}
就是这样!它会工作。有关详细信息,请查看Blackberry“用户界面和导航指南”