片段如何处理触摸?
Posted
技术标签:
【中文标题】片段如何处理触摸?【英文标题】:How Fragments handle touches? 【发布时间】:2011-07-16 03:44:46 【问题描述】:我正在玩 android 的 Fragments
,我发现了一些对我来说没有多大意义的东西。
因为我还没有摩托罗拉 xoom,所以我正在使用兼容性包并在带有 2.3.3 的 nexus 上进行测试。
我的问题是:
当我用另一个替换 fragment
时,后面的那个会继续收到触摸。
这是要重现的代码。
我有一个项目列表,当您按下一行时,将创建并显示一个新片段。
但是如果你触摸绿色片段,它将被ListFragment
接收,增加了我必须按下的返回按钮的数量才能返回ListFragment
。
谁能解释一下原因?
编辑: 正如 CommonsWare 建议的那样,我删除了粘贴在此处的代码,因为我在 android 问题跟踪器中将其作为 issue 打开,您可以从那里 download 演示项目。
【问题讨论】:
您可能想要压缩一个完整的项目来演示问题并从问题中链接到它。 @CommonsWare:好的,我会这样做。谢谢。 【参考方案1】:我遇到了类似的问题。我在一个较大的片段之上有一个较小的片段,您可以看到较大的片段从较小的片段中伸出。在某些情况下,当我按下顶部的片段时,它会触发底部片段的 onClick 事件处理程序。
为了防止这种情况发生,我将 onClickListener 设置为较小片段的父布局。通过这样做,它可以防止 onClick 事件被传递到它后面的片段。
LinearLayout ll= (LinearLayout) mView.findViewById(R.id.topLayout);
ll.setOnClickListener(new View.OnClickListener()
public void onClick(View v)
//left empty on purpose to capture the onClick event.
);
【讨论】:
以上是关于片段如何处理触摸?的主要内容,如果未能解决你的问题,请参考以下文章