android fragment 切换时上下层视图点击区域冲突

在使用fragment 动态add  或者replace fragment 后碰到过点击空白区域响应  

add 或者replace 之前的 UI 或者fragment里的点击事件 ,导致异常操作!

在android-support-v4 中FragmentPagerAdapter 一段代码


 @Override
    public Object instantiateItem(ViewGroup container, int position) {
        if (mCurTransaction == null) {
            mCurTransaction = mFragmentManager.beginTransaction();
        }


        final long itemId = getItemId(position);


        // Do we already have this fragment?
        String name = makeFragmentName(container.getId(), itemId);
        Fragment fragment = mFragmentManager.findFragmentByTag(name);
        if (fragment != null) {
            if (DEBUG) Log.v(TAG, "Attaching item #" + itemId + ": f=" + fragment);
            mCurTransaction.attach(fragment);
        } else {
            fragment = getItem(position);
            if (DEBUG) Log.v(TAG, "Adding item #" + itemId + ": f=" + fragment);
            mCurTransaction.add(container.getId(), fragment,
                    makeFragmentName(container.getId(), itemId));
        }
        if (fragment != mCurrentPrimaryItem) {
            FragmentCompat.setMenuVisibility(fragment, false);
            FragmentCompat.setUserVisibleHint(fragment, false);
        }


        return fragment;
    }


   @Override
    public void setPrimaryItem(ViewGroup container, int position, Object object) {
        Fragment fragment = (Fragment)object;
        if (fragment != mCurrentPrimaryItem) {
            if (mCurrentPrimaryItem != null) {
                FragmentCompat.setMenuVisibility(mCurrentPrimaryItem, false);
                FragmentCompat.setUserVisibleHint(mCurrentPrimaryItem, false);
            }
            if (fragment != null) {
                FragmentCompat.setMenuVisibility(fragment, true);
                FragmentCompat.setUserVisibleHint(fragment, true);
            }
            mCurrentPrimaryItem = fragment;
        }
    }



instantiateItem 和setPrimaryItem 方法里面是通过FragmentCompat 方法来控制fragment的显示和隐藏

其实就是使用Fragment 的方法setUserVisibleHint 和setMenuVisibility 方法来控制fragment的显示和隐藏

但 在fragment里面replace或者add fragment  之前使用setUserVisibleHint 和setMenuVisibility 方法并没有起到理想的效果!

可能是我没有正确使用 setUserVisibleHint 和setMenuVisibility 方法吧!

FragmentPagerAdapter 管理fragment 在viewpager 里面切换没有点击区域和fragment重叠的问题!

但是将fragment直接detach掉 每切换一次就要new一个fragment 不符合项目需求!

没办法只能在顶层的fragment 上接收onclick 点击事件

在oncreateview里面

public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

view.setOnclickListener(null);

return view;

}

view 返回之前加上全局视图点击监听,防止点击事件被之前的fragment或者activity视图处理产生异常操作!

暂时只能这样!内位高手有什么好的解决方法指导下呵呵!





评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值