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 true
ze 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 true
oznacza, że zdarzenie zostało skonsumowane. To jest obsługiwane. Żadne inne zdarzenia związane z kliknięciami nie będą powiadamiane.return false
oznacza, że wydarzenie nie jest konsumowane. Wszelkie inne zdarzenia związane z kliknięciami będą nadal otrzymywać powiadomienia.Więc jeśli nie chcesz, onClick
aby został wyzwolony również po zdarzeniu onLongClick
, powinieneś return true
z tego onLongClick
zdarzenia.
Upewnij się, że OnClickListener
Twoja onClick
metoda jest nadrzędna . Upewnij się również, że OnLongClickListener
Twoja onLongClick
metoda jest nadrzędna . I upewnij się, że Twoja onLongClick
metoda zwraca true
, ponieważ spowoduje to wykorzystanie pliku onClick
.
Możesz wdrożyć setOnLongClickListener
tworzenie 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 true
co 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.