Android 两个Fragment之间的跳转和数据的传递实例详解
Android 两个Fragment之间的跳转和数据的传递实例详解
作为一个Android的菜鸟,前些天在做项目的时候用到了fragment,需求是从一个Fragment跳转到另一个Fragment,并且还要传递数据,就像Activity的跳转一样。在网上找了好久都没找到很好的列子,最后通过看别人的博客和查文档终于做好了,现在整理一下,希望能帮助有需要的童鞋。
1、首先在第一个Fragment里面拿到FragmentManger和FragmentTransaction代码如下。
@Override publicvoidonCreate(BundlesavedInstanceState){ //TODOAuto-generatedmethodstub super.onCreate(savedInstanceState); fm=getFragmentManager(); }
2准备要传递的数据跳转。
deptListView.setOnItemClickListener(newOnItemClickListener(){ @Override publicvoidonItemClick(AdapterView>arg0,Viewarg1,intpostion, longarg3){ ft=fm.beginTransaction();//注意。一个transaction只能commit一次,所以不要定义成全局变量 longid=adapter.getDepartments().get(postion).getId(); Stringname=adapter.getDepartments().get(postion).getName(); DeptDocFragmentdf=newDeptDocFragment(); Bundlebundle=newBundle(); bundle.putLong("id",id); bundle.putString("name",name); df.setArguments(bundle); ft.replace(R.id.guide_content,df); ft.addToBackStack(null); ft.commit(); } });
上面的DeptDocFragment就是我要跳转的Fragment,而传递数据跟Activity一样,用Bundle,最后通过df.setArguments(bundle);携带数据。通过replace方法切换Fragment实现跳转,最后别忘了commit提交。
3 接下来就是在另一个Fragment中获取第一个Fragment传递过来的数据。
@Override publicvoidonCreate(BundlesavedInstanceState){ //TODOAuto-generatedmethodstub super.onCreate(savedInstanceState); Bundlebundle=getArguments(); deptId=bundle.getLong("id"); deptName=bundle.getString("name"); }
在Fragment的onCreate()方法中获取数据。然后在这个Fragment中完成你需要的逻辑。好了,整个Fragment的跳转就算是完成了。
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!