Odpowiedzi:
Od słuchaczy zdarzeń :
onLongClick () - zwraca wartość logiczną wskazującą, czy zdarzenie zostało wykorzystane i nie powinno być dalej przenoszone. Oznacza to, że zwraca true, aby wskazać, że zdarzenie zostało obsłużone i powinno się na tym zatrzymać; zwraca wartość false, jeśli nie została przez Ciebie obsłużona i / lub zdarzenie powinno zostać przekazane innym odbiornikom po kliknięciu.
Czy wracasz trueze swojego onLongClick()i nadal otrzymujesz normalne zdarzenie kliknięcia?
Edytowano w celu dodania : w przypadku ListView możesz używać OnItemLongClickListener. onItemLongClick()Nie wykorzystuje podobną wartość logiczną powrotny do wskazania, czy spożywane zdarzenie.
Przedstawiając odpowiedź w prostszych słowach:
Dany:
@Override
public boolean onLongClick(View view) {
return true; // or false
}
return trueoznacza, że zdarzenie zostało skonsumowane. To jest obsługiwane. Żadne inne zdarzenia związane z kliknięciami nie będą powiadamiane.return falseoznacza, że wydarzenie nie jest konsumowane. Wszelkie inne zdarzenia związane z kliknięciami będą nadal otrzymywać powiadomienia.Więc jeśli nie chcesz, onClickaby został wyzwolony również po zdarzeniu onLongClick, powinieneś return truez tego onLongClickzdarzenia.
Upewnij się, że OnClickListenerTwoja onClickmetoda jest nadrzędna . Upewnij się również, że OnLongClickListenerTwoja onLongClickmetoda jest nadrzędna . I upewnij się, że Twoja onLongClickmetoda zwraca true, ponieważ spowoduje to wykorzystanie pliku onClick.
Możesz wdrożyć setOnLongClickListenertworzenie instancji new View.OnClickListener()lub new View.OnLongClickListener(), jeśli utworzysz długie kliknięcie i zaimplementujesz normalny OnclickListener, otrzymasz te błędy aktywacji metody jednym kliknięciem. Należy używać new View.OnLongClickListener()do łapania tylko długich kliknięć
myListView.setOnItemLongClickListener(this);opcję, musisz zastąpić funkcjępublic boolean onItemLongClick(...). Tutaj wystarczy,return trueco wskazuje, że LongClick został aktywowany i anuluje wyzwalacz przy zwykłym kliknięciu. Jeśli zwrócisz wartość false, spowoduje to również zwykłe kliknięcie.