在用到fragment的时候,老是会遇到一个问题,就是fragment与activity之间的通信。下面就来记录一下 activity和fragment之间 通过实现接口来互相通信的方法。
1. activity 向fragment发出通信,就这么写:
private OnMainListener mainListener; // 绑定接口
@Override
public void onAttachFragment(Fragment fragment) {
try { mainListener = (OnMainListener) fragment; } catch (Exception e) { throw new ClassCastException(this.toString() + " must implement OnMainListener"); }
super.onAttachFragment(fragment); } // 接口
public interface OnMainListener { public void onMainAction(); }
- onMainAction 方法是activity向 fragment发出通信的方法,里面可以放参数, 在要发出通信的地方直接调用该方法即可。
- 在对应的fragment里面要这么写:
public class MyFragment extends Fragment implements OnMainListener {
public void onMainAction() {
//这里是实现通信的接口
2. fragment向activity 发出通信:(和前面差不多)
- private OnFragmentListener mListener;
@Override public void onAttach(Activity activity) {
super.onAttach(activity);
try { mListener = (OnFragmentListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString() + " must implement OnFragmentListener");
}
}
public interface OnFragmentListener { public void onFragmentAction(int flag); }
在activity中 实现接口: public class MainActivity extends Activity implements OnFragmentListener{
………………
public void onFragmentAction(int flag) {
两者都是通过接口的实现来进行通信的,重要的地方就是分别在onAttachFragment 和 onAttach方法中进行接口绑定。 通信还有其他方法的,比如广播、静态handler等,这里就不赘述了。
end~
http://www.colabug.com/thread-1124396-1-1.html
http://blog.csdn.net/t12x3456/article/details/8119607