Pregunta

he portado una aplicación de Blackberry 4.6.0 a 4.7.0 de la tormenta. Todo funciona bien aparte de los eventos de toque que estoy tratando de controlar. I trampa eventos táctiles en el método por debajo del cual hace lo que su supone que pero el problema es después de mi lógica en el TouchEvent ejecuta y devuelve el menú (que es activado mediante el botón de menú) siempre se muestra. He intentado volver falsa, verdadera y sigue apareciendo super.touchEvent (mensaje), pero a él.

¿Alguna idea de cómo puedo evitar que el menú aparezca después de la captura de eventos táctiles?

protected boolean touchEvent(TouchEvent message)
{
     if (message.getEvent() == TouchEvent.CLICK)
     {
        //My code here
     }
}

Sus pensamientos son muy apreciados

¿Fue útil?

Solución

Solo para aclarar la respuesta de haagmm:

Después de un TouchEvent.CLICK ha sido enviada a su solicitud, se enviará también un evento navigationClick. Esto es por razones de compatibilidad, así que cosas como ButtonFields trabajarán en un dispositivo de pantalla táctil incluso si la aplicación no se ha escrito explícitamente para responder a touchEvents.

Si un evento navigationClick no se consume (return true) por un campo en su aplicación, se mostrará el menú de contexto.

Si usted está viendo este comportamiento cuando se hace clic en un botón de campo, la explicación es que, por defecto, ButtonFields no consumen haga clic en eventos. He encontrado que es una buena práctica para construir siempre ButtonFields con los bits de estilo siguiente conjunto:

ButtonField myButtonField = 
    new ButtonField( ButtonField.CONSUME_CLICK | ButtonField.NEVER_DIRTY );

Código de haagmm es una solución, pero una mejor idea es copiar el código de manejo de TouchEvent.CLICK y pegarlo en el método navigationClick. De esta manera, un dispositivo de rueda de desplazamiento como el BlackBerry Tour todavía será capaz de utilizar su aplicación.

Otros consejos

Si está "clic" la pantalla o hacia la izquierda haciendo clic en el ratón en el simulador va a desencadenar el menú contextual, similar a si se ha hecho clic en la rueda de desplazamiento en un dispositivo 4.6.

Usted tendrá que hacer algo similar a esto en el campo que sobrecargado TouchEvent en:

 protected boolean navigationClick(int status, int time) { return true; }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top