如何在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
类的方法。
只需在Frag2
的onCreateView()
方法中调用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");
这很简单。