Android fragment与activity之间的接口回调那些事儿

    前几天自己做了个小应用需要用到在fragment中监听到activity中按钮的点击时间,并且activity向fragment传值,百度了很多但是一直没找到具体的实现方法没有找到可以在fragment中监听到activity中的点击事件,自己研究了一下,发现还是用接口回调实现,既可以传值也可以传递监听事件,好了废话不多说,接下来简单实现一下.

    首次先实现的是fragment监听activity按钮的点击时间。

    先在activity定义回调接口参数可以是(view v),也可以是其他类型的参数,这些参数通过回调从activity传递到fragment.

  //声明回调接口
    private MyOnClick myPersonOnClick,myCompanyOnClick;


    //定义回调接口
    public interface MyOnClick{
        void myListener(Map what);
    }

定义之后声明一个接口类型的变量,然后在需要调用的地方,例如onClick方法中去调用它写法如下

  //传递点击事件 以及activity向fragment传值
                    if(null!=myPersonOnClick){
                        myPersonOnClick.myListener(personMap);
                    }
                    if(null!=myCompanyOnClick){
                        myCompanyOnClick.myListener(companyMap);
                    }

定义set方法将接口从fragment中传递过来

    public void setCompanyOnclick(MyOnClick myOnClick){this.myCompanyOnClick=myOnClick;}
    public void setMyPersonOnClick(MyOnClick myOnClick1){
        this.myPersonOnClick=myOnClick1;
    }

然后在fragment实现接口的相关方法,并在fragment的声明周期中去注册接口

 //声明及实现接口的方法
    private MainActivity.MyOnClick myOnClick = new MainActivity.MyOnClick() {
        @Override
        public void myListener(Map what) {
            setData(what);
        }
    };

覆写onAttach方法注册接口方法


    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
//注册接口
        ((MainActivity) context).setMyPersonOnClick(myOnClick);
    }
这就是接口回调的全过程我这里实现的是传值问题,其他的传递点击事件,onTouch事件都类似只不过是传递参数发生变化。

你可能感兴趣的:(Android fragment与activity之间的接口回调那些事儿)