欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android 两个Fragment之间的跳转和数据的传递实例详解

程序员文章站 2023-11-24 21:42:10
android  两个fragment之间的跳转和数据的传递实例详解       作为一个android的菜鸟...

android  两个fragment之间的跳转和数据的传递实例详解

      作为一个android的菜鸟,前些天在做项目的时候用到了fragment,需求是从一个fragment跳转到另一个fragment,并且还要传递数据,就像activity的跳转一样。在网上找了好久都没找到很好的列子,最后通过看别人的博客和查文档终于做好了,现在整理一下,希望能帮助有需要的童鞋。

      1、首先在第一个fragment 里面拿到fragmentmanger 和fragmenttransaction 代码如下。

  @override
  public void oncreate(bundle savedinstancestate) {
  // todo auto-generated method stub
  super.oncreate(savedinstancestate);
  fm = getfragmentmanager();

  }

  2 准备要传递的数据跳转。

 deptlistview.setonitemclicklistener(new onitemclicklistener() {

@override
public void onitemclick(adapterview<?> arg0, view arg1, int postion,
long arg3) {
ft = fm.begintransaction();//注意。一个transaction 只能commit一次,所以不要定义成全局变量
long id = adapter.getdepartments().get(postion).getid();
string name = adapter.getdepartments().get(postion).getname();
deptdocfragment df = new deptdocfragment();
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();
}
});

上面的deptdocfragment就是我要跳转的fragment,而传递数据跟activity一样,用bundle,最后通过df.setarguments(bundle);携带数据。通过replace方法切换fragment实现跳转,最后别忘了commit 提交。

3  接下来就是在另一个fragment 中获取第一个fragment 传递过来的数据。

@override
public void oncreate(bundle savedinstancestate) {
// todo auto-generated method stub
super.oncreate(savedinstancestate);
bundle bundle = getarguments();
deptid = bundle.getlong("id");
deptname = bundle.getstring("name");
}

 在fragment的oncreate() 方法中获取数据。然后在这个fragment中完成你需要的逻辑。好了,整个fragment的跳转就算是完成了。

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!