Android中Intent之是数据的传递

Posted kaolagirl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android中Intent之是数据的传递相关的知识,希望对你有一定的参考价值。

两个Activity中互相传递数据的方法如下:

一.简单数据的传递
  1. 传递单个:可以直接通过调用Intent的putExtra()方法存入数据,然后在获得Intent后调用getXxxExtra获得 对应类型的数据;
  2. 传递多个:可以使用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)

以上是关于Android中Intent之是数据的传递的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据从 Intent 传递到 Fragment

Android第一行代码学习笔记六---Intent向活动传递数据

Android:将片段和弹出窗口的点击事件中生成的变量传递给活动的方法

使用BroadcastReciever传递Intent.EXTRAS

在 Android 中使用 Intent 在活动中传递 android 位图数据

android小知识点代码片段