片段如何处理触摸?

Posted

技术标签:

【中文标题】片段如何处理触摸?【英文标题】:How Fragments handle touches? 【发布时间】:2011-07-16 03:44:46 【问题描述】:

我正在玩 androidFragments,我发现了一些对我来说没有多大意义的东西。 因为我还没有摩托罗拉 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. 
    
);

【讨论】:

以上是关于片段如何处理触摸?的主要内容,如果未能解决你的问题,请参考以下文章

如何处理片段中的onClick [重复]

cocos2d 3.x 如何处理精灵外部的触摸

如何处理片段和活动中的后压

CocosCreator-如何处理鼠标事件

如何处理iphone中的关键事件

如何处理支持触摸和指针事件的设备上的触摸事件,其菜单包含不是父菜单的子项的子项