(转)Activity与Fragment之间传递参数

来源:互联网 发布:淘宝虚拟店铺赚钱吗 编辑:程序博客网 时间:2024/05/01 21:45

原地址:http://www.tuicool.com/articles/VjyU7n


在Activity中加载Fragment的时候需要传值到另Fragment,也就是说Activityg与Fragment之间进行参数的传递,可以使用bundle进行参数传递,看代码:

在activity中获取fragment中的数据

public class SaleQuoteActivity extends BaseActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.other_main);//在activity中获取相对应的fragment中的数据getSupportFragmentManager().beginTransaction().replace(R.id.detail_contain, SaleQuoteFragmentV2.newInstance(getIntent().getStringExtra(ConstantsRoseFashion.KEY_P_ID))).commit();}//@DebugLog@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);}}
在上面的代码中我们看到了activity在获取fragment中的数据时调用了fragment的newInstance()这个方法,那么下面我们来看看在这个方法中我们做了哪些事情呢
public static SaleQuoteFragmentV2 newInstance(String pid) {//通过Bundle保存数据Bundle args = new Bundle();args.putString(ConstantsRoseFashion.KEY_P_ID, pid);SaleQuoteFragmentV2 fragment = new SaleQuoteFragmentV2();//将Bundle设置为fragment的参数fragment.setArguments(args);return fragment;}

从这个方法中我们可以看到在Fragment中我们把需要传递的数据通过Bundle保存起来并且将这个Bundle设置成Fragment的参数,然后将这个Fragment对象返回,这样我们在Activity中就通过newInstance()这个方法取到了Fragment对象。

上面讲了怎样将Fragment中的数据传递到Activity当中,下面来看一下在Fragment中是如何取到从Activity中传递过来的数据的,其实非常的简单,看下面的码:

String pid = getArguments().getString(ConstantsRoseFashion.KEY_P_ID);

就这么一句话就可以了,非常简单吧!

上面说的都是传递的基本数据类型的数据,那么怎么传递一个Java Bean对象呢?

接着看下面的代码吧:

Intent intent = new Intent(context, GlobalPriceActivity.class);intent.putExtra(ConstantsRoseFashion.KEY_DATA, data != null ? new Gson().toJson(data) : null);context.startActivity(intent);在这里我是通过Gson将这个Java Bean转换成一个gson字
在这里我是通过Gson将这个Java Bean转换成一个gson字符串传递到Activity中的,然后从Activity传递到Fragment中,这个上面说过了在这里就不重复了,下面看看我们在Fragment中是如何将这个gson字符串转成一个Java Bean的

String json = getArguments().getString(ConstantsRoseFashion.KEY_DATA);singleGoods = new Gson().fromJson(json, SingleGoods.class);
当然在转换前要定义好这个Java Bean,这个我就不多说了,大家可以自己去试试。


0 0
原创粉丝点击