Fragment中上下文菜单contextmenu冲突问题解决方案

最近在开发一个小程序, 采用了Viewpager+fragment的方式。其中每个fragment中都有一个listiview, 而每个listview又绑定了各自的上下文菜单,在调试程序的时候发现,在某个界面调用上下文菜单的相应功能时,其他fragment中的listview的相应功能也被依次触发,显然这样是没办法正常使用的,网络上查询了各种文档和相关文章后,总结出最简单有效的解决方法如下。
解决方案:利用getUserVisibleHint()判断当前显示的fragment,匹配执行当前fragment对应的功能,截断继续执行其他页面的相应功能。
当然了,这就要求我们在每个fragment中重写public boolean onContextItemSelected(MenuItem item){}函数,举例如下:


@Override
public boolean onContextItemSelected(MenuItem item) {
     if (getUserVisibleHint()) {
           switch (item.getItemId()) {
        case 1:
            Toast.makeText(getContext(), "1",Toast.LENGTH_SHORT).show();
            break;

        case 2:
            Toast.makeText(getContext(), "2",Toast.LENGTH_SHORT).show();
            break;
        }
         return super.onContextItemSelected(item);
     }
     return false;
 }

标签: android, contextmenu

添加新评论