【问题标题】:onContextItemSelected() not called when a listview is embedded in a ViewPager当列表视图嵌入 ViewPager 时,不会调用 onContextItemSelected()
【发布时间】:2015-03-14 23:19:03
【问题描述】:

我正在显示一个包含 ViewPager 的 Activity。在其中一个寻呼机片段中,我有一个带有 ContextMenu 的 ListView。

长按列表项会显示 ContextMenu(调用 onCreateContextMenu()),但在 ContextMenu 中选择条目不会调用 onContextItemSelected()

在 ViewPager 之外使用相同的片段可以正常工作。 如果 Fragment 嵌入到 ViewPager 中,有什么特别的事情要做吗?

【问题讨论】:

  • 请发布您的代码。布局也会很有帮助。
  • 布局很简单。一个是浏览器。在 ViewPager 中,我显示了一个片段,其布局只是一个列表视图。它工作正常,但是当嵌入到 ViewPager 中时,会创建并显示 ContextMenu,但是当我按下条目时不会调用 onContextItemSelected()。我只是问是否有人知道这是怎么发生的
  • 哦,所以我猜你不希望问题得到解决,只是希望有人和你一起思考。好吧,我很好:)
  • 为什么有人需要任何代码来回答问题?不是每个问题都需要一些代码
  • 当您发布代码时,我们实际上可以自己运行代码,在调试器下获取它并找出确切的问题。

标签: android android-viewpager android-contextmenu


【解决方案1】:

我一起破解了一些代码并遇到了类似的问题。我在 Fragment 2 中为上下文菜单注册了 ListView,但未注册 Fragment 1。但不知何故,在 Fragment 1 上调用了 onContextItemSelected()

事实证明,当 FragmentManager 调度 ContextItemSelected 事件时,它会在它知道的每个 Fragment 上调用 onContextItemSelected(),直到其中一个返回 true。因此,在您的onContextItemSelected() 中,您必须检查该片段是否为 ViewPager 中的当前页面;如果不是,则返回 false。这可能是问题的根源之一。

看到这个问题:Wrong fragment in ViewPager receives onContextItemSelected call

希望对你有帮助

【讨论】:

  • 没有一些方法被弃用。我不想更改整个应用程序,我只是在寻找一种方法来完成这项工作......或者至少了解它为什么不这样做
  • 非常感谢!
  • 既然我花时间写代码来发现你的问题,你不觉得我应该得到那个赏金吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-02
  • 2023-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多