Fragment与Activity的交互

Activity与Fragment通信,也就是我们常说的交互。
这里介绍两种方式
1.直接使用Activity中的对象,
MainActivity

//在MainActivity中,定义一个public权限的String变量
public String mainactivity_data;

fragment

String temp = ((MainActivity) getActivity()).mainactivity_data;

这样,就可以使用MainActivity中的数据,前提是MainActivity中的对象权限不能为private。
当然,这样写会导致fragment耦合度较高,如果在其他Activity中嵌入上述fragment,那么MainActivity是没有实例的。

第二种方式
接口回调
我们先在fragment里定义一个接口

    interface OnDataInterFace {
        String onSuccess(String msg);

    }


    //并在该类里声明该接口作为全局对象
    OnDataInterFace onDataInterFace;

然后重写该类的onAttach方法

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        onDataInterFace = (OnDataInterFace) context;
        Log.e("MYFragment", onDataInterFace.onSuccess("这是从Fragment传过来的"));

    }

可以看到,调用success方法传入相应参数,当其他Activity使用该fragment类时会得到这个参数。
首先我们要在Activity implement在fragment中写的接口

public class MainActivity extends Activity implement FragmentThree.OnDataInterFace{



    //覆写该方法
    @Override
    public String onSuccess(String msg) {
        Log.e("MYTAGMainActivity2", msg);
        return "这是从MainActivity传过来的";
    }

}

msg为fragment传过来的数据,return String可以将String数据传到fragment中去,在fragment里直接接受就好

Log.e("MYTAGFragmentThree", onDataInterFace.onSuccess("这是从FragmentThree传过来的"));

调用onDataInterFace.onSuccess(“这是从FragmentThree传过来的”)就可以了。最终结果LogCat会
在MainActivity里打印fragment传入的数据,fragment相反

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值