1.Fragment--->Activity传递数据:
在Fragment中创建接口,并在相应点击事件中调用接口内的方法onDataAction
//定义接口 public interface onFragment2ActivtyListener{ public void onDataAction(int data);//可以设置传递的数据 } //声明 private onFragment2ActivtyListener mOnFragment2ActivtyListener; @Override public void onAttach(Context context) { super.onAttach(context); try { //绑定接口 Fragment-->activity中在onAttach中绑定 mOnFragment2ActivtyListener = (onFragment2ActivtyListener) context; } catch (Exception e) { } }
之后在Activity中实现implements其接口onFragment2ActivtyListener,并实现其方法,完成Fragment--->Activity通信
2.Activity--->Fragment传递数据
在Activity中创建接口,并在相应点击事件中调用接口内的方法onDataAction
//定义接口 public interface onActivity2FragmentListener{ public void onDataAction(int data);//可以添加其传递的数据 } private onActivity2FragmentListener mOnActivity2FragmentListener; /** * 绑定接口 * @param fragment 一定要和传递数据的Fragment是同类包下的(v4 or app) */ @Override public void onAttachFragment(Fragment fragment) { try { mOnActivity2FragmentListener = (onActivity2FragmentListener) fragment; } catch (Exception e){ } super.onAttachFragment(fragment); }
之后在Fragment中实现implements其接口onFragment2ActivtyListener,并实现其方法,完成Activity--->Fragment通信
在此期间我遇到一个宿主Activity下有三个Fragment(利用hide/show方式展示)都实现了Activity内的接口,当activity内有个按钮点击需要将数据传递给Fragment中的某一个(方法中添加type),导致响应紊乱,都会在最后一个fragment创建之后,只在最后一个响应,我的解决办法是使用replace代替hide/show的方式;activity内点击事件,只会在replace的当前Fragment中响应,如若有更好的方式,希望小伙伴们留言~
烦请大家尊重原创者版权,转载请标明出处https://blog.csdn.net/JOYU_/article/details/80563865