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 truedal 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 truesignifica che l'evento è consumato. È gestito. Nessun altro evento di clic verrà notificato.return falsesignifica che l'evento non è consumato. Qualsiasi altro evento di clic continuerà a ricevere notifiche.Quindi, se non si vuole onClickper essere attivato anche dopo una onLongClick, allora si dovrebbe return truedalla onLongClickmanifestazione.
Assicurati di sovrascrivere il OnClickListenertuo onClickmetodo. Assicurati anche di sovrascrivere il OnLongClickListenertuo onLongClickmetodo. E assicurati che il tuo onLongClickmetodo ritorni true, poiché questo consumerà il file onClick.
Puoi implementare la setOnLongClickListenercreazione 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 trueindicare che LongClick è stato attivato e annullerà il trigger al clic normale. Se restituisci false, attiverà anche il normale clic.