Fragment信息交互之多个Fragment在同一Activity中的交互

多个Fragment在同一个Activity中时,在信息交互时,由于Fragment是独立的,且不产生新的Activity可以使用startActivityForResult获取返回参数,同时也无法使用setArgment等函数多次向其他Fragment设置参数,这种情况下只能使用BroadcastReceiver来及时通知其他的子Fragment以及更新子Fragment。

由于broadcastReciver是对整个系统内的应用程序进行广播通知的,为了安全起见可使用LocalBroadCastReceiver来进行应用程序内的广播发送与接收。


下面是一个同在一个Activity中的两个Fragment,TitleFragment是一个列表Fragment,点击不同的列表时,可更新右边DetailFragment中的内容。他们之间的通信使用的时LocalBraodCastReceiver来进行的。

LocalBraodCastReceiver使用方式:

1 初始化广播器并添加过滤关键词

private MainCallBackLocalBroadCastReceiver mainCallBackLocalBroadCastReceiver;
	private LocalBroadcastManager lBM;
/**
	 * 初始化广播器
	 */
	private void InitMainLocalBroadcastReceiver() {
		lBM = LocalBroadcastManager.getInstance(MainActivity.this);
		mainCallBackLocalBroadCastReceiver = new MainCallBackLocalBroadCastReceiver();
		IntentFilter intentFilter = new IntentFilter();
		intentFilter.addAction("TitleFragment"); //添加过滤关键词
		intentFilter.addAction("DetailFragment");//添加过滤关键词
		lBM.registerReceiver(mainCallBackLocalBroadCastReceiver, intentFilter);

	}

2 自定义广播接收函数:

/**
	 * 广播接收处理函数
	 * @author admin
	 *
	 */
	private class MainCallBackLocalBroadCastReceiver extends BroadcastReceiver {

		@Override
		public void onReceive(Context context, Intent intent) {
			if (intent.getAction().equals("TitleFragment")) {

				//得到Title中传来的数据
				System.out.println("TitleFragment");
				String str = (String)intent.getExtras().get("arraylist");
				System.out.println(str);
				
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值