当前位置: 代码迷 >> Android >> android中fragment跟activity之间相互通信
  详细解决方案

android中fragment跟activity之间相互通信

热度:72   发布时间:2016-04-28 05:49:47.0
android中fragment和activity之间相互通信

在用到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~


  相关解决方案