Activity与Fragment之间传递参数

在Activity中加载Fragment的时候需要传值到另Fragment,也就是说Activityg与Fragment之间进行参数的传递,可以使用bundle进行参数传递,看代码:
[b]在activity中获取fragment中的数据[/b]
public class SaleQuoteActivity extends BaseActivity {

@Override
protected 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
@Override
protected 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字符串传递到Activity中的,然后从Activity传递到Fragment中,这个上面说过了在这里就不重复了,下面看看我们在Fragment中是如何将这个gson字符串转成一个Java Bean的
String json = getArguments().getString(ConstantsRoseFashion.KEY_DATA);
singleGoods = new Gson().fromJson(json, SingleGoods.class);

当然在转换前要定义好这个Java Bean,这个我就不多说了,大家可以自己去试试。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值