Android Fragment和Activity之间通过接口互传数据通信

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

猜你喜欢

转载自blog.csdn.net/joyu_/article/details/80563865