AndroidActivity间参数传递
Activity之间的参数传递
传递参数的⽅式:
传递参数的⽅式有两种:直接传递和回调传递。
直接传递:是指Activity直接向另外⼀个Activity传递参数,例如开发中:需要A、B两个Activity,A启动B,⽽且B需要A在A中所处理的业务逻辑结果进⾏相应的改变以及⼀些视图或者业务逻辑上的处理等需求时所采⽤的数据传递。
回调传递:是指Activity需要另外⼀个被启动的Activity处理完相应的需求并带参数返回到启动的Activity中页⾯进⾏相应的改变。如Activity启动相机获取相机拍摄的视频或者照⽚时就采⽤了这种回调传参的⽅式。
⾸先先看看这次需要讲解的代码图⽚
有三个按钮分别启动不同的Activity并针对不同的情况下进⾏代码演⽰,剩余的代码会根据不同的情况下的讲解⼀⼀奉上。()
直接传递以及回调传递的使⽤以及进阶:
直接传递的基础使⽤:
基础使⽤分为两种:
⼀种是直接使⽤Intent带值传参的使⽤⽅式,通过使⽤Intent.put类型("key”,”value”)的形式进⾏传递,也就是说通过键值对的形式进⾏传递,intent可传递基本数据类以及⼀些list集合的传递和序列化的使⽤,集合和序列化则会在进阶中⼀起讲解;⽽我们取出数据的时候则是调⽤get数值类型Extra⽅法进⾏相应值取出。
我们可以先看看Intent可以把什么参数进⾏传递
这些也只是其中⼀部分更多的参数传递请多阅读源码进⾏学习先看代码图⽚:
在代码图⽚中我们可以看到,在代码中我们可以看到,intent传⼊了⼀些基础类型数据以及⼀个list集合(list的集合以及接下来的bundle放⼊list的⽅法都会在进阶中⼀起探讨并分析其源码介绍),在代码我们可以看出有⼀对不同类型的键值对和⼀对同类型的键值对但是他们的键值都是相同,这样的使⽤为了探讨当都是使⽤putExtra这个⽅法时键值是⼀致时候参数类型相同以及不同时是否都会覆盖。
接下来我们看看运⾏效果图⽚
在代码图⽚以及程序运⾏的结果图中进⾏⽐对我们可以看出我们先是传⼊了⼀个Int类型进去,⾸先是24然后是18之后传⼊了⼀个String类型的24,然后int类型的数据都会最终被String类型的24替换掉也就说掉了putExtra这个⽅法不管怎么样只要你的键值是⼀致的就会覆盖数值,所以需要注意不要键值冲突,在代码图中我们看到get的⼀些⽅法还要放⼊⼀些参数如int参数布尔参数,这是为了避免参数没有传⼊进来Android所对数据原始预处理。
第⼆种则是Intent以及bundle的配套使⽤,那么它和第⼀种区别:Intent意在数据传递,bundle意在存取数据, intent内部使⽤bundle来实现数据传递的,只是封装了⼀层⽽已。在使⽤的时候如果需要传递的数据⽐较多,还是⽤Bundle来存储数据⽐较好。毕竟⼈家是专门做这个的。还有⼀个好处就是,如果您
在ABC三个页⾯中传值且顺序必须是ABC,直接传递Bundle的数据就好了。⽽不⽤在 B 将数据从Intent拿出来,然后封装到新的Intent,传递到C,多此⼀举。
安卓intent用法
⾸先我们看看Bundle可以传递参数的类型基本与Intent⼀致,接下来我们们看看第⼆种的使⽤⽅法以及运⾏效果图如图:
代码图⽚和⼀图差不多只要你理解了⼀图的代码接下来的代码⾮常好的可以理解,存放和取值基本⼀样都是通过键值对的形式进⾏写⼊读取。需要注意的是:不管是Bundle还是Intent只要键值⼀致都会覆盖,对⼀些数据取出还是存在预处理这⼀情况。
回调传递参数:
使⽤startActivityForResult 这个⽅法进⾏向被启动的Activity进⾏启动最后通过,调⽤SetReult传递会参数;最后使⽤onActivityResult这个⽅法接收。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。