Android: Why does long click also trigger a normal click?
Solution 1:
From Event Listeners:
onLongClick() - This returns a boolean to indicate whether you have consumed the event and it should not be carried further. That is, return true to indicate that you have handled the event and it should stop here; return false if you have not handled it and/or the event should continue to any other on-click listeners.
Are you returning true
from your onLongClick()
and still getting the normal click event?
Edited to add: For a ListView, you may be using OnItemLongClickListener
. The onItemLongClick()
there uses a similar boolean return value to indicate whether it consumed the event.
Solution 2:
Restating the answer in simpler terms:
Given:
@Override
public boolean onLongClick(View view) {
return true; // or false
}
-
return true
means that the event is consumed. It is handled. No other click events will be notified. -
return false
means the event is not consumed. Any other click events will continue to receive notifications.
So if you don't want onClick
to also be triggered after an onLongClick
, then you should return true
from the onLongClick
event.
Solution 3:
Make sure you are overriding OnClickListener
for your onClick
method. Also make sure you are overriding OnLongClickListener
for your onLongClick
method. And make sure that your onLongClick
method returns true
, as this will consume the onClick
.