Fragment与Activity间的通信(方法概述)

来源:互联网 发布:贴片式温度传感器淘宝 编辑:程序博客网 时间:2024/06/11 17:31

Fragment和Activity间通信

问题:熟练处理Activity和Fragment和ViewPage的配合使用,并能熟练处理Activity和Fragment,Fragment和Fragment之间的通信。(熟悉要回答的)

     

 

1.   利用FragmentManager的实例调用方法

ContentFragmentleft = (ContentFragment) getActivity()

                                           .getFragmentManager().findFragmentById(

                                                         R.id.content_right);

        cf.show(name);            //show为另个Fragment中的方法

PS:此方法适用于布局中已定义的Fragment,有各自的id,不适用于使用了ViewPager的动态生成的Fragment

2.   接口方式

在Fragment类中定义一个接口,并在它所属的Activity中实现该接口。Fragment在它的onAttach()方法执行期间捕获该接口的实现,然后就可以调用接口方法,以便跟Activity通信。(最常采用)

3.   广播通信

使用LocalBroadcastManager + IntentFilter解决不同组件通讯,Intent负责搭载数据

(因为广播性能肯定会差, 传播数据有限制(必须得实现序列化接口才可以)所以一般不采用)

4.   EventBus3.0框架方法(常用)

EventBus是基于订阅和发布的一种通信机制

(添加依赖de.greenrobot:eventbus:3.0.0-beta1)

使用流程:1.实例化EventBus对象,2.注册订阅者,3.发送消息,4.接收消息

一般让Fragment调用Activity的方法有一下几种

  • 创建Fragment的时候把MainActivity引用传给Fragment,其实通过getActivity()也能获取到实例
  • 创建Fragment的时候传入一个Handler实例,在Fragment中sendMessage也是可以的
  • 创建Fragment的时候传入一个实例化接口,作为回调
0 0
原创粉丝点击