如何在Fragments中使用setArguments()和getArguments()方法?

我有2个片段:(1)Frag1(2)Frag2。

Frag1

bundl = new Bundle(); bundl.putStringArrayList("elist", eList); Frag2 dv = new Frag2(); dv.setArguments(bundl); FragmentTransaction ft = getFragmentManager().beginTransaction(); ft.replace(R.id.the_fragg,dv); ft.show(getFragmentManager().findFragmentById(R.id.the_fragg)); ft.addToBackStack(null); ft.commit(); 

如何在Frag2中获取这些数据?

你有一个名为getArguments()属于Fragment类的方法。

只需在Frag2onCreateView()方法中调用getArguments()

 public class Frag2 extends Fragment { public View onCreateView(LayoutInflater inflater, ViewGroup containerObject, Bundle savedInstanceState){ //here is your arguments Bundle bundle=getArguments(); //here is your list array String[] myStrings=bundle.getStringArray("elist"); } } 

例如:添加数据: –

  Bundle bundle = new Bundle(); bundle.putString("latitude", latitude); bundle.putString("longitude", longitude); bundle.putString("board_id", board_id); MapFragment mapFragment = new MapFragment(); mapFragment.setArguments(bundle); 

例如:获取数据: –

 String latitude = getArguments().getString("latitude") 

对于那些希望发送基元以外的对象的人,因为你不能在你的片段中创build一个参数化的构造函数,只需要在你的片段中添加一个setter访问器,这总是对我有用。

在Frag1:

 Bundle b= new Bundle(); b.putStringArray("arrayname that use to retrive in frag2",StringArrayObject); Frag2.setArguments(b); 

在Frag2中:

 Bundle b=getArguments(); String [] stringArray=b.getStringArray("arrayname that passed in frag1"); 

这很简单。