美文网首页
2018-04-10—Fragment、Activity数据传递

2018-04-10—Fragment、Activity数据传递

作者: 季白zy | 来源:发表于2018-04-10 20:55 被阅读0次

我们之前已经学会了使用Fragment,但是fragment和Activity之间的数据交互是怎样一个流程呢?我来给大家画一张图:

fragment、Activity数据传递流程图   

我们习惯上通过Bundle从Activity给fragment传值。而从fragment给Activity传值习惯用接口回调,在Activity中实现一个接口,然后在接口方法里的参数放置数据。

下面我们来一步一步看一下是怎么实现的。


一、Activity给fragment传值:

我们创建了一个全局的bundle对象,然后在切换fragment的时候,调用了切换的fragment的setArguments方法,把bundle对象传入fragment。

接下来我们看fragment。

我们通过getArguments方法来得到bundle对象,然后通过getString得到我们bundle中的数据,第一个参数是key,第二个参数是默认数据,如果获取失败或者空,则得到后面这个数据。


二、fragment给Activity传值

我们先写一个接口,叫做DataCallBackListener的接口,然后在里面写一个抽象方法。

接下来我们在fragment中创建一个这样的接口,

之后我们需要给这个接口实例化,

这里是不是看的有些懵逼?不用着急,我们来看接下来这一步:

没错,我们在MainActivity中实现了DataCallBackListener这个接口,也就意味着这个接口被实例化了,所以我们可以用DataCallBackListener来接收MainActivity。

然后在button的点击事件中调用这个接口

我们返回了一个字符串。

刚才用过MainActivity实现了接口,现在要实现他的方法了。

我们把从OneFragment中的数据打印到日志中。

好了, 现在大家知道了fragment给Activity传值的方法了吧。


三、fragment给fragment传值

    既然前两种大家都会了,那么只要吧前两种结合起来,就可以做到fragment给fragment传值了。

我们通过回调接口从fragment1给Activity传值,然后在Activity回调的方法中,用bundle给fragment2传值,这样就做到了。

偷个小懒,具体代码就不就写了。

相关文章

网友评论

      本文标题:2018-04-10—Fragment、Activity数据传递

      本文链接:https://www.haomeiwen.com/subject/jrznhftx.html