代码之家  ›  专栏  ›  技术社区  ›  AtariPete

黑莓轨迹球点击,而不是响应事件,上下文菜单显示为什么?

  •  3
  • AtariPete  · 技术社区  · 15 年前

    我在一些设备上遇到了以下场景:当use clicks on字段需要响应,而不是正确响应click事件时,设备会在屏幕的底部中心显示上下文菜单。

    导航松开和跟踪轮松开
    根据我读到的内容,我可以覆盖NavigationUnclick和TrackWheelUnclick,以防止显示菜单。我在屏幕级别上这样做,但是复制居中的菜单场景是很困难的。这是正确的方法吗?

    为什么会这样?有什么办法可以解决这个问题吗?

    4 回复  |  直到 13 年前
        1
  •  6
  •   lilbyrdie    15 年前

    我最近发生了这种事。我在延伸 MainScreen 提供一些基本功能,但不需要上下文菜单。返回 true 从N avigationClick() 已删除此行为。

    public class MyScreen extends MainScreen {
        protected boolean navigationClick(int status, int time) {
            /*  
            ... custom behavior ... 
            */
            return true;
            // the following line would trigger the context menu
            //return super.navigationClick(status, time);
        }
    }
    

    我不需要重写 navigationUnclick() 完全。与@justind的超控方法不同 onMenu() ,这只会阻止菜单出现在这种情况下——而不是整个屏幕上(您可能需要,这可能是更好的方法)。

    总之,这是我最近对点击和菜单的体验。

        2
  •  1
  •   Jan Gressmann    15 年前

    你能发布你的密码吗?尝试重写TrackWheelClick和NavigationClick,而不是取消链接方法。同时确保在这些方法中返回true。

        3
  •  1
  •   JustinD    15 年前

    如果您覆盖了onmenu并只返回true(您处理了菜单事件),那么菜单将不会出现……假设您也不需要完整的菜单-如果您需要完整的菜单而不是上下文菜单,那么只需执行Jan所说的操作,您应该很好-确保返回true,否则事件将冒泡并最终生成菜单。

    public class MyClass Extends MainScreen
    {
       ///
      // Override onMenu to prevent menu from coming up when you click trackwheel 
      public boolean onMenu(int instance)
      {
        return true;
      }
    }
    
        4
  •  0
  •   Alexander Farber    13 年前

    您可以在主屏幕中的所有字段上使用consume-click样式…