两个Activity中互相传递数据的方法如下:
一.简单数据的传递
- 传递单个:可以直接通过调用Intent的putExtra()方法存入数据,然后在获得Intent后调用getXxxExtra获得 对应类型的数据;
- 传递多个:可以使用Bundle对象作为容器,通过调用Bundle的putXxx先将数据 存储到Bundle中,然后调用Intent的putExtras()方法将Bundle存入Intent中,然后获得 Intent以后, 调用getExtras()获得Bundle容器,然后调用其getXXX获取对应的数据!
二.传递数组
存数据
Intent evalIntent = new Intent(MyOrderFragment.this.getContext(), OrderEval.class);
Bundle bd = new Bundle();
String[] strArray = new String[]{"a","b"};
bd.putStringArray("strArray",strArray);
evalIntent.putExtras(bd);
startActivity(evalIntent);
取数据
Bundle bd = getIntent().getExtras();
String[] strArr = bd.getStringArray("strArray");
Log.i(TAG, "onCreate: "+strArr[0]);
三. 传递集合
1.List<基本数据类型或String>
存数据
intent.putStringArrayListExtra(name, value)
intent.putIntegerArrayListExtra(name, value)
取数据
intent.getStringArrayListExtra(name)
intent.getIntegerArrayListExtra(name)
2. Map<String, Object>,或List<Map<String,Object>>
存数据
List<Map<String,Object>> list = new ArrayList<>();
Map<String,Object> map = new HashMap<>();
map.put("sku_id",sku_id);
map.put("goods_nums",num);
list.add(map);
Intent intent = new Intent(GoodDetail.this,GoodOrder.class);
Bundle bundle = new Bundle();
ArrayList bundleList = new ArrayList();
bundleList.add(list);
bundle.putParcelableArrayList("list",bundleList);
intent.putExtras(bundle);
startActivity(intent);
取数据
//接收从上个页面传过来的参数
Bundle bundle = getIntent().getExtras();
ArrayList list = bundle.getParcelableArrayList("list");
List<Map<String,Object>> goods = (List<Map<String,Object>>)list.get(0)