天天看点

两个activity或者activity和fragment传值

使用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");

即可得到