Risposte:
Dai listener di eventi :
onLongClick () : restituisce un valore booleano per indicare se hai consumato l'evento e non dovrebbe essere portato oltre. Ovvero, restituisci true per indicare che hai gestito l'evento e che dovrebbe fermarsi qui; restituisce false se non l'hai gestito e / o l'evento deve continuare per qualsiasi altro ascoltatore al clic.
Stai tornando true
dal tuo onLongClick()
e ricevi ancora il normale evento clic?
Modificato per aggiungere : per un ListView, potresti utilizzare OnItemLongClickListener
. Il onItemLongClick()
c'è utilizza un valore di ritorno booleano simile per indicare se si consuma l'evento.
Riaffermando la risposta in termini più semplici:
Dato:
@Override
public boolean onLongClick(View view) {
return true; // or false
}
return true
significa che l'evento è consumato. È gestito. Nessun altro evento di clic verrà notificato.return false
significa che l'evento non è consumato. Qualsiasi altro evento di clic continuerà a ricevere notifiche.Quindi, se non si vuole onClick
per essere attivato anche dopo una onLongClick
, allora si dovrebbe return true
dalla onLongClick
manifestazione.
Assicurati di sovrascrivere il OnClickListener
tuo onClick
metodo. Assicurati anche di sovrascrivere il OnLongClickListener
tuo onLongClick
metodo. E assicurati che il tuo onLongClick
metodo ritorni true
, poiché questo consumerà il file onClick
.
Puoi implementare la setOnLongClickListener
creazione di un'istanza di new View.OnClickListener()
o new View.OnLongClickListener()
, se crei un clic lungo e implementa un normale OnclickListener, otterrai questo errore di clic singolo attivando il metodo. Dovresti usare new View.OnLongClickListener()
per catturare solo clic lunghi
myListView.setOnItemLongClickListener(this);
opzione, dovrai sovrascrivere la funzionepublic boolean onItemLongClick(...)
. Qui è sufficientereturn true
indicare che LongClick è stato attivato e annullerà il trigger al clic normale. Se restituisci false, attiverà anche il normale clic.