在Activity中加载Fragment的时候需要传值到另Fragment,也就是说Activityg与Fragment之间进行参数的传递,可以使用bundle进行参数传递,看代码:
在activity中获取fragment中的数据
在上面的代码中我们看到了activity在获取fragment中的数据时调用了fragment的newInstance()这个方法,那么下面我们来看看在这个方法中我们做了哪些事情呢
从这个方法中我们可以看到在Fragment中我们把需要传递的数据通过Bundle保存起来并且将这个Bundle设置成Fragment的参数,然后将这个Fragment对象返回,这样我们在Activity中就通过newInstance()这个方法取到了Fragment对象。
上面讲了怎样将Fragment中的数据传递到Activity当中,下面来看一下在Fragment中是如何取到从Activity中传递过来的数据的,其实非常的简单,看下面的码:
就这么一句话就可以了,非常简单吧!
上面说的都是传递的基本数据类型的数据,那么怎么传递一个Java Bean对象呢?
接着看下面的代码吧:
在这里我是通过Gson将这个Java Bean转换成一个gson字符串传递到Activity中的,然后从Activity传递到Fragment中,这个上面说过了在这里就不重复了,下面看看我们在Fragment中是如何将这个gson字符串转成一个Java Bean的
当然在转换前要定义好这个Java Bean,这个我就不多说了,大家可以自己去试试。
已有 0人发表留言,猛击->> 这里<<-参与讨论
ITeye推荐
在activity中获取fragment中的数据
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,这个我就不多说了,大家可以自己去试试。
已有 0人发表留言,猛击->> 这里<<-参与讨论
ITeye推荐