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

来源:互联网 发布:安装软件赚钱联盟 编辑:程序博客网 时间:2024/05/22 05:22

一、使用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中读取数据:

@Overridepublic 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));

……

原创粉丝点击