Blackberry 黑莓风暴事件
我将黑莓4.6.0应用程序移植到4.7.0版本的storm上。 除了我试图控制的触摸事件外,一切正常。 我在下面的方法中捕捉触摸事件,该方法按其预期的方式执行,但问题是 触摸事件中的逻辑执行并返回后,始终显示菜单(通过菜单按钮激活)。 我已经尝试返回false、true和super.touchEvent(消息),但它仍然出现 如何防止触摸事件后出现菜单Blackberry 黑莓风暴事件,blackberry,touchscreen,rim-4.7,Blackberry,Touchscreen,Rim 4.7,我将黑莓4.6.0应用程序移植到4.7.0版本的storm上。 除了我试图控制的触摸事件外,一切正常。 我在下面的方法中捕捉触摸事件,该方法按其预期的方式执行,但问题是 触摸事件中的逻辑执行并返回后,始终显示菜单(通过菜单按钮激活)。 我已经尝试返回false、true和super.touchEvent(消息),但它仍然出现 如何防止触摸事件后出现菜单 protected boolean touchEvent(TouchEvent message) { if (message.getE
protected boolean touchEvent(TouchEvent message)
{
if (message.getEvent() == TouchEvent.CLICK)
{
//My code here
}
}
非常感谢您的想法如果您在sim卡中“单击”屏幕或鼠标左键,您将触发关联菜单,类似于在4.6设备上单击轨迹球
您需要在重载touchEvent的字段上执行类似的操作:
protected boolean navigationClick(int status, int time) { return true; }
为了澄清哈格姆的答案: 将TouchEvent.CLICK发送到应用程序后,还将发送navigationClick事件。这是出于兼容性的原因,因此,即使应用程序没有明确编写以响应touchEvents,ButtonFields之类的东西也可以在触摸屏设备上工作 如果应用程序中的字段未使用navigationClick事件(返回true),则将显示关联菜单 如果您在单击按钮字段时看到这种行为,那么解释是默认情况下,按钮字段不使用单击事件。我发现,始终使用以下样式位集构建ButtonField是一种好的做法:
ButtonField myButtonField =
new ButtonField( ButtonField.CONSUME_CLICK | ButtonField.NEVER_DIRTY );
haagmm的代码是一种解决方案,但更好的方法是复制TouchEvent.CLICK处理代码,并将其粘贴到navigationClick方法中。这样,像BlackBerry Tour这样的轨迹球设备仍然可以使用您的应用程序