【问题标题】: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:好的,我会这样做。谢谢。

标签: android android-fragments


【解决方案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. 
    }
});

【讨论】:

    猜你喜欢
    • 2014-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多