• fragment如何获取activity的点击事件


     

            如今在activity中使用fragment的布局非常常见,那么如果想在fragment获取activity点击事件,如何获得呢?

            今天要做一个功能,即fragment中有一个弹框,需要在整个activity被触摸时将该弹框进行隐藏,但是在fragment中的view只能获取到fragment被触摸的事件,而不能直接获取activity的触摸事件,如果想要获取activity的触摸事件,我们可以通过回调的方式在fragment中获取到activity的触摸事件,然后做相应操作。

    具体操作如下:

    一、定义接口

    先定义一个接口

    public interface FragmentKeyEventListener {
        void onFragmentKeyEvent(MotionEvent event);
    }

     二、在需要获取activity触摸事件的Fragment中implements该接口,并实现该接口方法。

    public class WallpaperFragment implements FragmentKeyEventListener{

    ............................

        @Override
        public void onFragmentKeyEvent(MotionEvent event) {
                
         //do something what you want to do

        }

    ............................
    }

    三、在activity中提供setFragmentKeyEventListener()方法,给fragment调用,用来设置监听器mFragmentKeyEventListener。该监听器持有onFragmentKeyEvent()方法,在activity被触摸后,就会自动调用到dispatchTouchEvent()方法,在该方法中使用监听器调用onFragmentKeyEvent()方法,即可回调到步骤二中在fragment中实现的onFragmentKeyEvent()方法,并执行fragment中的onFragmentKeyEvent()方法的具体操作,代码如下:

    public class MainActivity{

    private FragmentKeyEventListener mFragmentKeyEventListener;

    //给fragment提供方法,用来设置监听器
    public void setFragmentKeyEventListener(WallpaperFragment wallpaperFragment) {
            this.mFragmentKeyEventListener = wallpaperFragment;
     }

    //activity中获取到的触摸事件通过监听器回调给fragment(即每次activity被触摸之后,
      将该触摸事件通过设置好的监听器传给fragment)
        @Override
        public boolean dispatchTouchEvent(MotionEvent ev) {       
                if (mFragmentKeyEventListener != null) {
                    mFragmentKeyEventListener.onFragmentKeyEvent(ev);
                }
            return super.dispatchTouchEvent(ev);
        }

    }

     

    四、在fragment中拿到activity的实例,然后用该activity实例调用setFragmentKeyEventListener(this)方法设置步骤三中的监听器。

    @Override
    public void onResume() {
       super.onResume();
       ((MainActivity) mActivity).setFragmentKeyEventListener(this);
    }

            使用以上四步即可完成在fragment获取activity点击事件的需求。

  • 相关阅读:
    nacos2.2.1搭建
    java面试宝典-抱你过岸
    VMware vCenter和ESXi 升级注意事项
    什么是Docker CLI
    使用 Spring Cloud Loadbalancer 实现客户端负载均衡
    exness:欧元区经济意外向好,欧元震荡蓄势等待突破
    三大知名向量化模型比较分析——m3e,bge,bce
    小孢子的神奇之旅-如何阅读MindSpore报错信息(2)
    API学习总结
    关于CASIO系列可编程计算器在公路施工测量中的应用
  • 原文地址:https://blog.csdn.net/weixin_42433094/article/details/126177332