Activity和Fragment之前的通信

来源:互联网 发布:c 语言 api 删除文件 编辑:程序博客网 时间:2024/04/29 15:31

当在Activity中使用了Fragment的时候,始终要考虑的一个问题就是Fragment和Activity要如何通信。所谓的通信就是当Fragment中触发了某些事件之后,或者数据发生变化之后,如何通知Activity。

请先看下面的class图示:

diagram
来解释一下图中的意思:
这里的FragmentCallBack 是一个接口定义了Fragment 和Activity之间通信时候调用的方法。FragmentLearningActivity本身 实现了这个callback接口,从泛型角度,它就是这个接口的具体实现类。
而在TopFragment中定义了一个FragmentCallBack的实例callBack,所以当初始化的TopFragment的时候,就把Fragment所属的Activity也就是FragmentLearningActivity注册给这个实例callBack。

当TopFragment有事件触发的时候,就调用这个接口实例callBack调用invokeItemSelect方法,因为callBack就是泛指FragmentLearningActivity,所以FragmentLearningActivity中的invokeItemSelect就会触发,这通过这个方法就可以实现具体的通信。
其实这种方式在popupwindow和Activity通信方式也会被用到。所以大家要经常思考加以扩展和复用。
下面是一个Fragment和Activity之间通信的例子:
TopFragment实现:

FragmentCallBack接口

FragmentLearningActivity的代码实现:

Activity布局文件中添加fragment:

This entry was posted in A
0 0