Android - 为什么onItemLongClick(...)会返回一个布尔值?

31

作为一个Java开发者,我习惯于处理事件,但我不确定为什么该方法需要返回一个布尔值,并且对网站上给出的解释并没有完全理解:如果回调函数消耗了长按(long click)事件则返回true,否则返回false。

2个回答

53

如您所知,Android 中的View 层次结构是由树来表示的。当您从onItemLongClick()返回true时,这意味着当前接收到事件的View是真正的事件接收者,该事件不应传播给树中其他Views;而当您返回false时,您可以让事件传递给其他可能消耗它的Views。希望这能帮助您。


14

我将通过一个例子进一步为您澄清这个问题。

@Override
public boolean onLongClick(View view) {

//Do all you stuff here    

return true; // or you can return false;
}
  • 返回true表示:事件已经被处理。在此之后不会再触发任何事件。
  • 返回false表示:事件未被处理。与此点击相关的任何其他事件仍将触发。

因此,在你的onLongClick()触发后,如果你不想让常规的onClick()触发,则只需从onLongClick()事件中返回true即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接