首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >两个activity或者activity和fragment传值

两个activity或者activity和fragment传值

作者头像
xiangzhihong
发布2018-01-30 10:48:36
1.4K0
发布2018-01-30 10:48:36
举报
文章被收录于专栏:向治洪向治洪

使用Fragment的时候可能需要在两个Fragment之间进行参数的传递,开始想着可以使用SharedPreferences进行处理,想想这些简单的参数没有必要使用这么麻烦的方式去实现,翻了一下Fragment的API,找到一个方法就能实现像Activity一样便捷的实现参数传递 程序中的一段代码

ft.hide(getActivity().getSupportFragmentManager().findFragmentByTag(“”));  
                SearchProjectFragment sf = new SearchProjectFragment();  
                Bundle bundle = new Bundle();  
                bundle.putString("key", Projsid);  
                sf.setArguments(bundle);  
                ft.add(R.id.fragmentRoot, sf, SEARCHPROJECT);  
                ft.addToBackStack(SEARCHPROJECT);  
                ft.commit();  

可以使用bundle进行参数传递,这样在两个Fragment跳转的时候就可以带上参数了,在另外一个Fragment获取参数的方式只需要一个语句String string = getArguments().getString("key");  key是自己定义的一个标识,参数的形式只要bundle能传递都可以实现

     这个原理好像是和Activity是一样的。我这里传递的是一个关键字,从一个搜索Fragment页面跳转到两外一个结果查询的Fragment页面,在跳转的时候也可以加上一些动画的跳转效果

ft.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left, R.anim.slide_in_left, R.anim.slide_out_right);  

下面是我在项目中例子,fragment通过itent将值传递到activty,然后通过下面的代码

 shipProductId=getIntent().getStringExtra("shipProductId");         shipCompanyFragment=new ShipCompanyFragment();         Bundle bundle=new Bundle();         bundle.putString("productId", shipProductId);         shipCompanyFragment.setArguments(bundle);         FragmentTransaction ft = getSupportFragmentManager().beginTransaction();         ft.add(R.id.ship_container, shipCompanyFragment);         ft.commit();

传递到fragment,

最后再fragment中

shipProductId=getArguments().getString("productId");

即可得到

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2014-09-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档