Fragment之间的通信

本文深入探讨Fragment之间的通信机制,包括同级Fragment间的交互、Fragment嵌套时的通信以及Fragment与Activity的通信方式。重点介绍了如何在子Fragment中获取父Fragment实例,以及在不同场景下获取FragmentManager的方法。同时,阐述了Activity与Fragment之间通信的具体实现方法,包括使用接口和直接获取实例的两种途径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


依我所见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方法,网上资料如云,都是通过接口实现的。

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


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值