Fragment之间传递数据

目录

通过Activity传递

画面显示(XML)

逻辑代码(Java)

通过接口传递数据


通过Activity传

画面显示(XML)

首先这是一个Activit显示上有两个Fragment容器,是为了显示两个Fragment。

然后Activity加载了两个Fragment的数据并依次replace到了两个容器中。

此时Activity就有了两个Fragment的对象,方便后续FragmentA获取FragmentB。


逻辑代码(Java)

在FragmentA和FragmentB中设置一个setData方法去改动一些TextView什么的。

然后最重要的一步!!

1)用getActivity()方法获取Activity的实例对象。

2)通过这个Activity对象去获取另一个Fragment的对象,通过findFragmentById/findFragmentByTag找到指定的另一个Fragment,或者Fragment作为Activity的公有成员变量直接使用。

3)然后再通过此FragmentB对象去调用Fragment的setData()方法,就可以从A传递给B数据了。

所以一个FragmentA先拿到其Activity对象,再通过这个Activity找到指定的FragmentB对象,然后调用其B方法,从而A传递B数据。


通过接口传递数据

目的:FragmentA想要发送数据给B。

在FragmentA中设置接口以及接收接口参数,和成员变量。

//保存FragmentB传来的接口对象
private OnFragmentChangeInfo mOnFragmentChangeInfo;

//设置公有方法,让FragmentB调用
public void SetOnFragmentChangeInfo(OnFragmentChangeInfo info){
    this.mOnFragmentChangeInfo=info;
}

//重写此接口的FragmentB需要什么数据就设置什么数据
interface OnFragmentChangeInfo{
    void String message(String data);
}

1)先让FragmentB获得FragmentA的实例对象,才能调用SetOnFragmentChangeInfo()方法和OnFragmentChangeInfo接口。


真正实现:是在FragmentB重写OnFragmentChangeInfo接口。

((FragmentA)fragment).setSetOnFragmentChangeInfo(new OnFragmentChangeInfo{
    @Override
    public void message(String data){
        tv.setText(data);
    }
});

2)此时B传给A了一个接口对象,并保存在mOnFragmentChangeInfo字段中。


//什么时候想要传给B就什么时候调用
mOnFragmentChangeInfo.message("我传过去数据咯,其他我不管咯,逻辑什么的你自己搞定");

3)这时调用传过来的对象的message方法,即可向B传数据。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

七qi_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值