day day up--Android开发之Fragment间的通信

一个Activity可以包含多个Fragment,如果有需要让其中的Fragment关联起来,第一个Fragment里的数据会影响到第二个Fragment的显示,那么就需要Fragment之间能够进行通信。Fragment之间不能直接进行通信,需要借助宿主Activity来进行,Activity作为“数据传输与交换机”,连接多个Fragment。

要实现两个Fragment之间的通信需要三步:

1.在需要传输数据的Fragment里定义接口。(回调接口规定与Activity之间的数据传输方式)

public interface OnMainItemSelectedListener {  
        public void onMainItemSelected(int position);  
    }  

2.在宿主Activity中实现Fragment里定义的接口。(对Fragment传过来的数据如何处理,包括是否传给其他Fragment)

public void onMainItemSelected(int position) {
		System.out.println("onMainItemSelected-->position:"+position);
		ItemListFragment fragment = new ItemListFragment();
		Bundle args = new Bundle();
		args.putInt("position",position);
		fragment.setArguments(args);
		fragmentManager.beginTransaction().replace(R.id.fragment_container,fragment).commit();
    }  

3.在Fragment的onAttach()方法里实例化接口变量,并在需要的地方调用回调接口里的方法。

OnMainItemSelectedListener mCallback;

@Override
	public void onAttach(Activity activity) {
		super.onAttach(activity);
		try {  
            mCallback = (OnMainItemSelectedListener) activity;  
        } catch (ClassCastException e) {  
            throw new ClassCastException(activity.toString()+ " must implement OnMainItemSelectedListener");  
        }  
    }  
在需要传输数据地方调用:

@Override
		public void onItemSelected(AdapterView<?> parent, View view,
				int position, long id) {
			mCallback.onMainItemSelected(position);
		}
在本例中,在所接受数据的Fragment里使用如下代码即可接受position:

int position = getArguments().getInt("position");

这里就完成了数据从一个Fragment通过Activity传到另一个Fragment里。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值