在黑莓上创建自定义菜单

时间:2011-11-25 07:25:22

标签: blackberry menu customization

我在新类中创建了一个自定义菜单,扩展了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导致。如何更改此代码,或者有另一种方法来显示此菜单。

2 个答案:

答案 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“用户界面和导航指南”