依我所见Fragment之间的通信一般说的是
1两个同级的Fragment之间
2Fragment里面嵌套另外一个Fragment3Fragment与FragmentActivity之间的通信
Fragment向父Activity传入数据使用接口
同级之间通过共同的FragmentActivity作为中介进行通信
如果共同的父窗口,就使用父Fragment作为中介进行通信
嵌套在Fragment里面的Fragment可以使用getParentFragment()函数获取到父窗口Fragment的实例,然后对其操作,但是在父窗口最开始加入子fragment的时候,要使用:
getChildFragmentManager()
获取FragmentManager对象,然后进行add,replace等操作。
这样在子fragment中就能使用getParentFragment()函数获取到父窗口的实例。
如果使用的是
getFragmentManager()
来获取FragmentManager对象去执行add,replace事务的话,在子类中getParentFragment就是null了。
getFragmentManager()这个是在Activity中获取FragmentManager实例的,所以在Fragment中想嵌套fragment,请务必使用getChildFragmentManager()去获取FragmentManager实例。
至于Activity与Fragment之间的通信,在FragmentActivity中获取嵌入的Fragment,一般使用
Activity向子Fragment传入数据直接获取实例
getSupportFragmentManager().findFragmentById(int);
getSupportFragmentManager().findFragmentByTag(String);
无论作为中介还是主动发起通信,都使用这两个函数直接获取子窗口,然后进行通信
同级之间都是通过相关的Activity通信的。利用onAttach()函数进行获取,但是其实getActivity()也是可以做到的。
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
}
Fragment调用Activity方法,网上资料如云,都是通过接口实现的。#随笔文章,纯粹个人记录#