android中fragment和activity之间相互通信

来源:互联网 发布:广东榕泰怎么有云计算 编辑:程序博客网 时间:2024/05/22 02:23

 在用到fragment的时候,老是会遇到一个问题,就是fragment与activity之间的通信。下面就来记录一下activity和fragment之间 通过实现接口来互相通信的方法。

    1. activity 向fragment发出通信,就这么写:

    private OnMainListener mainListener;

    // 绑定接口

    @Override

    public void onAttachFragment(Fragmentfragment) {

    try {

    mainListener = (OnMainListener)fragment;

    } catch (Exception e) {

    throw newClassCastException(this.toString() + " must implementOnMainListener");

    }

    super.onAttachFragment(fragment);

    }

    // 接口

    public interface OnMainListener {

    public void onMainAction();

    }

    onMainAction方法是activity向fragment发出通信的方法,里面可以放参数, 在要发出通信的地方直接调用该方法即可。

    在对应的fragment里面要这么写:

    public class MyFragment extends Fragment implementsOnMainListener {

    ……………………

    @Override

    public voidonMainAction() {

    //这里是实现通信的接口

    }

    2. fragment向activity 发出通信:(和前面差不多)

    private OnFragmentListener mListener;

    @Override

    public void onAttach(Activity activity) {

    super.onAttach(activity);

    try {

    mListener = (OnFragmentListener) activity;

    } catch (ClassCastException e) {

    throw newClassCastException(activity.toString() + " must implement OnFragmentListener");

    }

    }

    public interface OnFragmentListener {

    public void onFragmentAction(intflag);

    }

    在activity中 实现接口:

    publicclass MainActivityextendsActivityimplementsOnFragmentListener{

    ………………

    // 实现接口方法

    @Override

    public voidonFragmentAction(int flag) {

    //实现通信的接口

    }

    两者都是通过接口的实现来进行通信的,重要的地方就是分别在onAttachFragment和 onAttach方法中进行接口绑定。

    通信还有其他方法的,比如广播、静态handler等,这里就不赘述了。

    end~

0 0
原创粉丝点击