Відповіді:
Від слухачів подій :
onLongClick () - Це повертає булевий сигнал, щоб вказати, що ви споживали подію, і не слід її переносити далі. Тобто поверніть істинне, щоб вказати, що ви попрацювали з подією, і вона повинна зупинитися тут; повернути помилкове, якщо ви його не обробляли та / або подію слід продовжувати будь-яким іншим слухачам, що натискають на клік.
Ви повертаєтеся 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 була активована і скасує тригер при звичайному натисканні. Якщо ви повернете помилкове значення, воно також спричинить звичайний клік.