Android: Почему длинный клик также вызывает обычный щелчок?
У меня есть ListView с слушателями для долгого клика и обычного клика.
Почему, когда я долгое время нажимаю элемент списка, регулярное событие click вызывает также?
Мне нужно иметь две отдельные функции для разных кликов.
Ответы
Ответ 1
От Слушатели событий:
onLongClick() - Это возвращает логическое значение, указывающее, использовало ли вы событие, и его нельзя переносить дальше. То есть верните true, чтобы указать, что вы обработали событие, и он должен остановиться здесь; return false, если вы его не обработали, и/или событие должно продолжаться до любого другого прослушивателя.
Вы возвращаете true
из своего onLongClick()
и все еще получаете нормальное событие click?
Отредактировано для добавления. Для ListView вы можете использовать OnItemLongClickListener
. В onItemLongClick()
используется аналогичное значение логического возврата, чтобы указать, потребляло ли оно событие.
Ответ 2
Убедитесь, что вы переопределяете OnClickListener
для вашего метода onClick
. Также убедитесь, что вы переопределяете OnLongClickListener
для вашего метода onLongClick
. И убедитесь, что ваш метод onLongClick
возвращает true
, так как это будет потреблять onClick
.
Ответ 3
Повторение ответа проще:
Дано:
@Override
public boolean onLongClick(View view) {
return true; // or false
}
-
return true
означает, что событие уничтожено. Он обрабатывается. Никакие другие события кликов не будут уведомлены.
-
return false
означает, что событие не потребляется. Любые другие события кликов будут продолжать получать уведомления.
Итак, если вы не хотите, чтобы onClick
также запускался после onLongClick
, тогда вы должны return true
из события onLongClick
.