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