我有一个应用程序,可以在ViewPager
中显示一些片段(相同类型),并且上下文菜单项遇到一些麻烦。 (我正在使用支持库)。
在片段之一的上下文菜单中选择上下文菜单项时,错误的片段接收到onContextItemSelected
事件调用。
例如,如果我在寻呼机中的#3片段上,则位置#2上的片段改为接收它。如果我滑动回片段#2,则片段#3会接听电话。
我有一个示例here。
(我目前正在自己的应用程序中解决此问题,方法是在每个片段中都有一个mHandleContext
变量,并在页面更改时启用/禁用它。这样,onContextItemSelected
调用将遍历所有片段,直到调用正确的片段为止。 )
我是在做错什么,还是支持库有问题?附带说明一下,当我使用ActionBarSherlock 3.5.1(它具有自己的支持库分支)时,这没有发生。
最佳答案
因此,这是Google的一种愚蠢的设计决策,或者是完全没有考虑的事情。解决此问题的最简单方法是使用以下if语句包装onContextItemSelected
调用:
if (getUserVisibleHint()) {
// Handle menu events and return true
} else
return false; // Pass the event to the next fragment
ActionBarSherlock 3.5中的兼容性库有这样的hack。