现在有两个Activity,一个A在前面,一个B在后面,现在点击屏幕down,up,A页面不处理,全部交给B去处理,如何做到?,还是可以依靠其他控件做到?

解决方案 »

  1.   

    说白了,B的作用是,App做一下事情,不想用户知道
      

  2.   

    不在栈顶显示的activity甚至可能被回收,activity实现这个效果的话实在是不现实。
    实在想做可以换成fragment试试
      

  3.   

    屏幕点击,在Activity的窗口层级下,事件是无法跨activity传递的,A页面也无法改动,改动的只有B页面
      

  4.   

    目前看,可以用windowManager,弹出一个window处理,fragment要跟Activity绑定,Activity被销毁就尴尬了
      

  5.   

    不想让用户知道,你可以用service啊
      

  6.   

    放在一个页面解决一切问题
    或者重写dispatchTouchEvent事件将事件用eventbus全部发送给a界面并删掉super,然后a界面调用dispatchTouchEvent
      

  7.   

    采用过滤器模式,A、B直接增加Filter,把需要B处理的消息透传给B即可。
      

  8.   

    过滤器模式可以试试,重写dispatchTouchEvent事件将事件用eventbus全部发送给a界面并删掉super,然后a界面调用dispatchTouchEvent
    这个方式在前面已经试过不起作用,a页面没有任何事件
      

  9.   

    我还特意试了一下,不知道你是怎么没用的mainAcitivity    protecte void onCreate(@Nullable Bundle savedInstanceState) {
            EventBus.getDefault().register(this);
        }    protected void onDestroy() {
            EventBus.getDefault().unregister(this);
            super.onDestroy();
        }    @Subscribe
        public void onTe(MotionEvent ev) {
            dispatchTouchEvent(ev);
            Utils.toastInstance("ev分发");
        }
    他上面的Activity
        @Override
        public boolean dispatchTouchEvent(MotionEvent ev) {
            EventBus.getDefault().post(ev);
            return true;
        }
    没有任何问题,所有事件全部传到mainActivity了
      

  10.   

    main里面有点击事件,逻辑是跳转,随便点都有效果