onContextItemSelected() 在列表视图嵌入 ViewPager 时不调用

onContextItemSelected() not called when a listview is embedded in a ViewPager

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

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

在 ViewPager 之外使用相同的片段效果很好。 如果 Fragment 嵌入到 ViewPager 中,有什么特别的事情要做吗?

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

事实证明,当 FragmentManager 调度 ContextItemSelected 事件时,它会在它知道的每个 Fragment 上调用 onContextItemSelected() 直到其中一个 return 为真。所以在你的 onContextItemSelected() 中,你必须检查片段是否是 ViewPager 中的当前页面;如果不是,return 错误。这可能是问题的来源之一。

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

希望对您有所帮助