Fragment之间的通信


依我所见Fragment之间的通信一般说的是

1两个同级的Fragment之间

2Fragment里面嵌套另外一个Fragment

3Fragment与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方法,网上资料如云,都是通过接口实现的。

#随笔文章,纯粹个人记录#


你可能感兴趣的:(Android进阶)