Android进阶一:Fragment之间的数据通信

一、使用Bundle

在打开Fragment的地方设置Bundle:

DeptDocFragment df = new DeptDocFragment();

//使用Bundle传递数据
Bundle bundle = new Bundle();
bundle.putLong("id", id);
bundle.putString("name", name);
df.setArguments(bundle);

ft.replace(R.id.guide_content, df);
ft.addToBackStack(null);
ft.commit();

在Fragment中读取数据:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Bundle bundle = getArguments();
    deptId = bundle.getLong("id");
    deptName = bundle.getString("name");`

}

注意:在 Fragment 被添加到 FragmentManager 后,一旦被使用,我们再次调用setArguments()将会导致java.lang.IllegalStateException: Fragment already active 异常。
详见:Fragment already active

二、直接调用Fragment实例的方法

在DeptDocFragment.java中设置public方法:

//DeptDocFragment.java文件中
public void setData(String string) {
  bt_main.setText(string);
}

在调用Fragment的地方调用它的方法:

DeptDocFragment deptDocFragment=
  (deptDocFragment)getActivity().getSupportFragmentManager().findFragmentByTag("deptDocFragment");
deptDocFragment.setData(mDatas.get(position));

……

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值