黑莓风暴touchEvents

Ton*_*lon 3 blackberry touchscreen rim-4.7

我已经将一个Blackberry 4.6.0应用程序移植到了4.7.0的风暴上.除了我试图控制的触摸事件之外,一切都很好.我在下面的方法中捕获触摸事件,这样做的确如此,但问题是我的touchEvent中的逻辑执行并返回菜单(通过菜单按钮启动)总是显示.我试过返回false,true和super.touchEvent(消息),但它仍然出现.

陷阱触摸事件后如何阻止菜单出现的任何想法?

protected boolean touchEvent(TouchEvent message)
{
     if (message.getEvent() == TouchEvent.CLICK)
     {
        //My code here
     }
}
Run Code Online (Sandbox Code Playgroud)

非常感谢您的想法

Ale*_*x W 6

只是为了澄清haagmm的答案:

将TouchEvent.CLICK发送到您的应用程序后,还将发送navigationClick事件.这是出于兼容性原因,因此即使未明确编写应用程序来响应touchEvents,ButtonFields之类的东西也可以在触摸屏设备上运行.

如果应用中的字段未使用navigationClick事件(返回true),则将显示上下文菜单.

如果在单击按钮字段时看到此行为,则说明默认情况下,ButtonFields不会消耗单击事件.我发现总是使用以下样式位设置构造ButtonFields是一种好习惯:

ButtonField myButtonField = 
    new ButtonField( ButtonField.CONSUME_CLICK | ButtonField.NEVER_DIRTY );
Run Code Online (Sandbox Code Playgroud)

haagmm的代码是一个解决方案,但更好的想法是复制TouchEvent.CLICK处理代码并将其粘贴到navigationClick方法中.这样,像BlackBerry Tour这样的轨迹球设备仍然可以使用您的应用程序.