Activity和Fragment无疑是Android开发中使用最多的组件,如果Activity使用了多个Fragment,需要在Activity与Fragment,以及Fragment与Fragment之间进行数据通讯,这是开发时经常遇到的需求问题,其实在我没整理这篇blog前也遇到过这样的数据通讯需求,下面是后来整理的用接口回调的方式实现Fragment与Fragment之间,以及用Bundler实现Activity与Fragment之间数据通讯,希望能对大家有帮助.
- 通过接口回调,实现Fragment与Fragment之间数据通讯,逻辑如下:
1.创建一个接口,并在接口里面创建用于处理回调的函数,函数上面声明一个参数,参数的数据类型是Fragment之间通讯的数据类型
2.在一个Fragment中创建用于注册回调的函数,函数上面声明一个参数,参数的数据类型是接口的类型
3.在另外的一个Fragment中创建一个内部类,并且将内部类实现回调的接口并实现接口中的函数,然后在外部类中通过第一个Fragment的类名直接调用第一个Fragment中用于注册回调的函数,将自己内部类的对象作为参数传递
4.实现数据传递时,只要第一个Fragment调用接口中处理数据的函数,那另外一个Fragment就会收到传递的数据
Activity(左边和右边各显示一个Fragment):
public class MainActivity extends Activity {
private FragmentManager mManager;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 获取Fragment管理者
mManager= getFragmentManager();
// 默认左边边显示的Fragment
FragmentTransaction leftTr= mManager.beginTransaction();
LeftFragment leftFragment = new LeftFragment();
leftTr.replace(R.id.fl_left, leftFragment);
leftTr.commit();
// 默认右边显示的Fragment
FragmentTransaction rightTr = mManager.beginTransaction();
RightFragment rightFragmen