Pergunta

Eu portei uma aplicação BlackBerry 4.6.0 para a tempestade em 4.7.0. Tudo está funcionando bem, além dos eventos de toque que estou tentando controlar. Eu prendi os eventos de toque no método abaixo, o que é o que é necessário, mas o problema é que minha lógica no TouchEvent executar e retornar o menu (que é ativada pelo botão de menu) é sempre exibida. Eu tentei devolver False, True e Super.Touchevent (Mensagem), mas ainda aparece.

Alguma idéia de como posso impedir que o menu apareça após prender o evento de toque?

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

Seus pensamentos são muito apreciados

Foi útil?

Solução

Só para esclarecer a resposta de Haagmm:

Depois que um touchEvent.Click foi enviado para sua inscrição, um evento de navegação também será enviado. Isso é por razões de compatibilidade; portanto, coisas como Buttonfields funcionam em um dispositivo de tela sensível ao toque, mesmo que o aplicativo não tenha sido explicitamente escrito para responder aos TouchEvents.

Se um evento de navegação não for consumido (retorne true) por um campo no seu aplicativo, o menu de contexto será exibido.

Se você está vendo esse comportamento ao clicar em um campo de botão, a explicação é que, por padrão, o Buttonfields não consome eventos de cliques. Descobri que é uma boa prática sempre construir Buttonfields com o seguinte conjunto de bits de estilo:

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

O código do Haagmm é uma solução, mas uma idéia melhor é copiar seu código de manuseio TouchEvent.Click e também colá -lo no método NavigationClick. Dessa forma, um dispositivo de trackball como o BlackBerry Tour ainda poderá usar seu aplicativo.

Outras dicas

Se você está "clicando" na tela ou clicando na esquerda no mouse no SIM, acionará o menu de contexto, semelhante a se você clicaria no trackball em um dispositivo 4.6.

Você precisará fazer algo semelhante a isso no campo em que sobrecarregou o TouchEvent:

 protected boolean navigationClick(int status, int time) { return true; }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top