Android - 为啥 onItemLongClick(...) 返回一个布尔值?

Posted

技术标签:

【中文标题】Android - 为啥 onItemLongClick(...) 返回一个布尔值?【英文标题】:Android - Why does onItemLongClick(...) return a boolean?Android - 为什么 onItemLongClick(...) 返回一个布尔值? 【发布时间】:2012-08-27 03:56:40 【问题描述】:

来自 Java 背景,我习惯于处理操作,尽管我不太确定为什么该方法需要返回布尔值并且不完全理解网站上给出的解释:如果回调消耗了 long,则为 true点击,否则为假。

【问题讨论】:

【参考方案1】:

您可能知道,android 中的View 层次结构由一棵树表示。当您从onItemLongClick() 返回true 时 - 这意味着当前接收到事件的View 是真正的事件接收者,并且该事件不应传播到树中的另一个Views;当您返回 false 时 - 您让事件传递给可能消耗它的另一个 Views。希望这会有所帮助。

【讨论】:

【参考方案2】:

我将通过一个例子为你进一步澄清这一点。

@Override
public boolean onLongClick(View view) 

//Do all you stuff here    

return true; // or you can return false;

return true 表示:事件已被处理。不会有任何事件 在此之后被解雇。 return false 表示:事件尚未处理。任何其他事件 与此点击相关的操作仍会触发。

因此,在您的 onLongClick() 触发后,如果您不希望常规 onClick() 触发,则只需 返回 true 来自 onLongClick() 事件。

【讨论】:

以上是关于Android - 为啥 onItemLongClick(...) 返回一个布尔值?的主要内容,如果未能解决你的问题,请参考以下文章

android: NeighboringCellInfo 总是空的!?为啥?

Android:为啥会出现这个错误?

为啥我突然收到错误“无法解析目标'android-9'”?

android AsyncTask执行为啥这么慢

为啥 TwitterLoginButton 在 Android 上不会膨胀?

如何理解为啥android无法安装apk文件?