一、使用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));
……