标签:contextmenu viewpager fragment oncontextitemselecte getuservisiblehint
上下文菜单ContextMenu由系统支持,常用于通过长按控件弹出列表形菜单,实现步骤如下
在我的具体项目环境中,Viewpager中存在3个Fragment(0/1/2),并继承自一个父类BaseFragment。在父类中完成了上下文菜单的绝大部分工作,即上文提到的创建/注册/响应点击;子类中仅重写onCreateContextMenu方法,用于区分修改菜单显示;那么问题来了:
问题的症结在于Viewpager改变了其中的Fragment显式的生命周期和关联关系,在前文《关于Activity中的Viewpager中的Fragment的生命周期》我也提到过这一问题,并尝试采用setUserVisibleHint方法解决了问题;在本文中同样,可以采用getUserVisibleHint()方法判断当前Fragment是否真实可见,如可见则响应,不可见则截止并向下分发,直到有可见页面响应为止。
在3个Fragment子类中,均需重写
public boolean onContextItemSelected(MenuItem item) { if (getUserVisibleHint()) { return super.onContextItemSelected(item); } return false; }
return true 代表截断
在Viewpager中的Fragment使用ContextMenu问题
标签:contextmenu viewpager fragment oncontextitemselecte getuservisiblehint
原文地址:http://blog.csdn.net/tongcpp/article/details/42237863