Respuestas:
De los oyentes de eventos :
onLongClick () : devuelve un valor booleano para indicar si ha consumido el evento y no debe continuar. Es decir, devuelva verdadero para indicar que ha manejado el evento y que debería detenerse aquí; devuelva falso si no lo ha manejado y / o el evento debe continuar a cualquier otro oyente al hacer clic.
¿Regresa true
de su onLongClick()
y sigue recibiendo el evento de clic normal?
Editado para agregar : para un ListView, puede estar usando OnItemLongClickListener
. El onItemLongClick()
no utiliza un valor de retorno booleano similares para indicar si se consume el evento.
Reestableciendo la respuesta en términos más simples:
Dado:
@Override
public boolean onLongClick(View view) {
return true; // or false
}
return true
significa que el evento se consume. Se maneja Ningún otro evento de clic será notificado.return false
significa que el evento no se consume. Cualquier otro evento de clic continuará recibiendo notificaciones.Entonces, si no desea onClick
que se active también después de un onLongClick
, entonces debe hacerlo return true
desde el onLongClick
evento.
Asegúrate de anular OnClickListener
tu onClick
método. También asegúrese de anular OnLongClickListener
su onLongClick
método. Y asegúrese de que su onLongClick
método regrese true
, ya que esto consumirá el onClick
.
Puede implementar la setOnLongClickListener
creación de una instancia de new View.OnClickListener()
o new View.OnLongClickListener()
, si crea un clic largo e implementa un OnclickListener normal, obtendrá estos errores de un solo clic activando el método. Debe usar new View.OnLongClickListener()
para capturar solo clics largos
myListView.setOnItemLongClickListener(this);
opción, deberá anular la funciónpublic boolean onItemLongClick(...)
. Aquí simplemente necesita loreturn true
que indica que LongClick se activó y cancelará el disparador con el clic normal. Si devuelve falso, también activará el clic normal.