【问题标题】:create custom menu on blackberry在黑莓上创建自定义菜单
【发布时间】:2011-11-25 07:25:21
【问题描述】:

我在新类扩展 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 引起。如何更改此代码或有其他方法显示此菜单。

【问题讨论】:

  • 写UiApplication.getUiApplication().pushScreen(popup);在 EventLock 中。
  • 你能解释一下怎么做吗?我是黑莓的初学者
  • 您遇到的错误是什么?

标签: blackberry menu customization


【解决方案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);
}

【讨论】:

    【解决方案2】:

    在黑莓中,菜单的创建、显示和隐藏由系统处理;您将在适当的时候收到回调。您需要编码的回调是:

    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)
    }
    

    就是这样!它会起作用的。详情请查看黑莓“UI 和导航指南”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-15
      • 1970-01-01
      相关资源
      最近更新 更多