本节引言:
上一节中我们学习了Intent的一些基本使用,知道了Intent的七个属性,显式Intent以及 隐式Intent,以及如何自定义隐式Intent,最后还给大家提供了一些常用的系统Intent! 而本节跟大家讲解的是Intent传递数据的问题~好的,开始本节内容~
1.Intent传递简单数据
还记得我们在Activity那里学过如何在两个Activity中互相传递简单数据的方法吗?
就是可以直接通过调用Intent的putExtra()方法存入数据,然后在获得Intent后调用getXxxExtra获得 对应类型的数据;传递多个的话,可以使用Bundle对象作为容器,通过调用Bundle的putXxx先将数据 存储到Bundle中,然后调用Intent的putExtras()方法将Bundle存入Intent中,然后获得Intent以后, 调用getExtras()获得Bundle容器,然后调用其getXXX获取对应的数据! 另外数据存储有点类似于Map的!
2.Intent传递数组
嘿嘿,普通类型倒没问题,但是如果是数组咧?解决方法如下:
写入数组:
bd.putStringArray("StringArray",newString[]{"呵呵","哈哈"});//可把StringArray换成其他数据类型,比如int,float等等...
读取数组:
String[]str =bd.getStringArray("StringArray")
3.Intent传递集合
嗯,数组很简单吧,那我们再来传下集合~这个就稍微复杂点了,分情况处理:
1)List
写入集合:
intent.putStringArrayListExtra(name,value)intent.putIntegerArrayListExtra(name,value)
读取集合:
intent.getStringArrayListExtra(name)intent.getIntegerArrayListExtra(name)
2)List< Object>
将list强转成Serializable类型,然后传入(可用Bundle做媒介)
写入集合:
putExtras(key,(Serializable)list)
读取集合:
(List)getIntent().getSerializable(key)
PS:Object类需要实现Serializable接口
3)Map,或更复杂的
解决方法是:外层套个List
//传递复杂些的参数 Mapmap1 =newHashMap();map1.put("key1","value1");map1.put("key2","va