1、通过一些通信工具 如eventbus,这个是可以任意页面 组件通信
2、通过获取实例的方式
fragment通过getActivity()方法来获得Activity的实例,然后可以获取到此activity中的静态方法变量,也可以获取到它页面的控件
同理 在activity中通过ExampleFragment fragment = (ExampleFragment) getFragmentManager().findFragmentById(R.id.example_fragment);
获取到fragment实例
此种方式也用在同一个activity 中的两个fragment中通讯
首先在一个Fragment中可以得到与它相关联的Activity,然后再通过这个Activity去获取另外一个Fragment的实例,这样就实现了不同Fragment之间的通信。
3、通过回调的方式(这个需要学习回调怎么用):
一些情况下,可能需要fragment和activity共享事件,一个比较好的做法是在fragment里面定义一个回调接口,然后要求宿主activity实现这个接口。当activity通过这个接口接收到一个回调,它可以让同布局中的其他fragment分享这个信息。
4、通过Bundle传值
Activity在切换Fragment的时候,通过setArguments向Fragment传递参数,Fragment通过getArguments();获得从activity中传递过来的值
5、在applaction中定义需要的数据和方法,applcation是每个类 页面都可以访问到的
6、contentprovider 数据库 shareperence 等很多 大致常用的也就这些了
在fragment里面有个重写的onAttach方法,可以引用到对应的父Activity。另外,可以用接口实现他们之间的数据交互,还可以写成公共静态方法,直接用类名调用。需要灵活处理。