Respostas:
Dos ouvintes do evento :
onLongClick () - retorna um booleano para indicar se você consumiu o evento e não deve ser levado adiante. Ou seja, retorne true para indicar que você manipulou o evento e ele deve parar aqui; retorne false se você não o tiver manipulado e / ou o evento continuar com outros ouvintes ao clicar.
Você está voltando true
do seu onLongClick()
evento e continua recebendo o clique normal?
Editado para adicionar : para um ListView, você pode estar usando OnItemLongClickListener
. O onItemLongClick()
lá usa um valor de retorno booleano semelhante para indicar se consumiu o evento.
Reafirmando a resposta em termos mais simples:
Dado:
@Override
public boolean onLongClick(View view) {
return true; // or false
}
return true
significa que o evento é consumido. É tratado. Nenhum outro evento de clique será notificado.return false
significa que o evento não é consumido. Quaisquer outros eventos de clique continuarão recebendo notificações.Portanto, se você não quiser onClick
também ser acionado após um onLongClick
, deverá fazê- lo a return true
partir do onLongClick
evento.
Verifique se você está substituindo o OnClickListener
seu onClick
método. Verifique também se você está substituindo o OnLongClickListener
seu onLongClick
método. E certifique-se de que seu onLongClick
método retorne true
, pois isso consumirá o onClick
.
Você pode implementar a setOnLongClickListener
criação de uma instância de new View.OnClickListener()
ou new View.OnLongClickListener()
, se você criar um clique longo e implementar um OnclickListener normal, obterá esses erros de clique único ativando o método. Você deve usar new View.OnLongClickListener()
para capturar apenas cliques longos
myListView.setOnItemLongClickListener(this);
opção, você precisará Substituir a funçãopublic boolean onItemLongClick(...)
. Aqui você precisa simplesmente oreturn true
que indica que o LongClick foi ativado e cancelará o gatilho com um clique regular. Se você retornar falso, também acionará o clique regular.