zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

两个activity或者activity和fragment传值详解手机开发

手机开发 详解 两个 或者 Activity 传值 fragment
2023-06-13 09:20:14 时间

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


[java]
view plain
copy 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页面,在跳转的时候也可以加上一些动画的跳转效果


[java]
view plain
copy 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 );

即可得到

5803.html

app程序应用开发手机开发无线开发移动端开发