我们之前已经学会了使用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传值,这样就做到了。
偷个小懒,具体代码就不就写了。
网友评论