【摘要】:可以看出,碎片和活动都是各自存在于一个独立的类当中,它们之间并没有那么明显的方式来直接进行通信。在每个碎片中都可以通过调用getActivity()方法来得到和当前碎片相关联的活动实例,代码如下所示:有了活动实例之后,在碎片中调用活动里的方法就变得轻而易举了。另外,当碎片中需要使用Context 对象时,也可以使用getActivity()方法,因为获取到的活动本身就是一个Context 对象。
虽然碎片都是嵌入在活动中显示的,可实际上它们的关系并没有那么亲密。 可以看出,碎片和活动都是各自存在于一个独立的类当中,它们之间并没有那么明显的方式来直接进行通信。 如果想要在活动中调用碎片里的方法,或者在碎片中调用活动里的方法,应该如何实现呢?
为了方便碎片和活动之间进行通信,FragmentManager 提供了一个类似于findView-ById()的方法,专门用于从布局文件中获取碎片的实例,代码如下所示:
调用FragmentManager 的findFragmentById()方法,可以在活动中得到相应碎片的实例,然后就能轻松地调用碎片里的方法了。
在每个碎片中都可以通过调用getActivity()方法来得到和当前碎片相关联的活动实例,代码如下所示:(www.xing528.com)
有了活动实例之后,在碎片中调用活动里的方法就变得轻而易举了。 另外,当碎片中需要使用Context 对象时,也可以使用getActivity()方法,因为获取到的活动本身就是一个Context 对象。
这时不知道你心中会不会产生一个疑问,既然碎片和活动之间的通信问题已经解决了,那么碎片和碎片之间可不可以进行通信呢?
这个问题并不复杂,它的基本思路非常简单:首先在一个碎片中可以得到与它相关联的活动,然后再通过这个活动去获取另外一个碎片的实例,这样也就实现了不同碎片之间的通信功能。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。