Activity活动切换及数据回传
来源:互联网 发布:淘宝客推广收费 编辑:程序博客网 时间:2024/05/12 06:41
安卓开发中,UI界面在进行切换过程中,也即是不同Activities的生命状态的转变。当应用程序由当前活动的Activity1切换到另外一个Activity2时,Activity1相关的所有数据会被操作系统,也就是Java虚拟机JVM自动压入堆栈,Activity2则处于活动状态。Activity切换除了使用Activity父类的方法setContentView动态加载视图外,更多的是使用“意图”类也就是Intent,使得程序切换到想要到达的Activity。采用Intent类进行Activity切换,可以通过方法startActivity(myIntent),也可以通过方法startActivityForResult(myIntent, requestCode)实现。前者实现切换时,数据只能从Activity1单向传送到Activity2;后者则可以实现数据的双向传送。
双向数据传送原理:
在Activity1中,通过startActivityForResult(myIntentData, requestCode)方法,将myIntent里面的数据以及请求码requestCode(自定义整型变量)发送给Activity2,Activity2收到数据及请求码后,通过setResult(resultCode, myIntentData)方法就可以实现向Activity1回传数据。
requestCode和resultCode都是整型常数,主要用来进行逻辑判断和功能标识。
requestCode用来区分是Activity1中的哪一个按钮事件,产生了Activity2,从而当Activity2传回数据给Activity1时,通过判断requestCode的值,就可以进行相应的按键事件处理。例如Activity1中有2个Button,2个Button都会产生新的Activity,但是回传数据只能回传给当前Activity1,那么Activity1如何判断是哪一个Button按钮事件响应得到了回传数据呢?requestCode就是用来处理这种情况。
要实现接收Activity2回传给Activity1的数据,在Activity1中,还需要重写Activity类的方法onActivityResult(requestCode, resultCode, IntentData)。该方法中的requestCode,就是用来判断Activity2的回传数据的。方法重写中可以通过switch(requestCode)的方法来进行。onActivityResult(requestCode, resultCode, IntentData)在Activity2 finish后会自动调用执行的,故其参数requestCode与startActivityForResult(myIntentData, requestCode)中的requestCode是对应的,例如某一按键启动startActivityForResult(myIntentData, requestCode)时传入requestCode = 13,那么在onActivityResult(requestCode, resultCode, IntentData)方法中进行switch判读时,case 13就对应处理该按键对应的回传数据。
与requestCode对应,resultCode用来区分是哪一个Activity2回传的数据。由于在Activity1中,可以通过startActivityForResult方法打开多个Activity2,故当多个Activity2 finish时,会将各自的数据回传给Activity1,为了区分是哪一个Activity2回传的数据,Activity2会回传自己的结果码,也就是resultCode。同样,在Activity1的方法onActivityResult(requestCode, resultCode, IntentData)中,通过switch(resultCode)就可以处理不同的回传数据。
双向数据传送原理:
在Activity1中,通过startActivityForResult(myIntentData, requestCode)方法,将myIntent里面的数据以及请求码requestCode(自定义整型变量)发送给Activity2,Activity2收到数据及请求码后,通过setResult(resultCode, myIntentData)方法就可以实现向Activity1回传数据。
requestCode和resultCode都是整型常数,主要用来进行逻辑判断和功能标识。
requestCode用来区分是Activity1中的哪一个按钮事件,产生了Activity2,从而当Activity2传回数据给Activity1时,通过判断requestCode的值,就可以进行相应的按键事件处理。例如Activity1中有2个Button,2个Button都会产生新的Activity,但是回传数据只能回传给当前Activity1,那么Activity1如何判断是哪一个Button按钮事件响应得到了回传数据呢?requestCode就是用来处理这种情况。
要实现接收Activity2回传给Activity1的数据,在Activity1中,还需要重写Activity类的方法onActivityResult(requestCode, resultCode, IntentData)。该方法中的requestCode,就是用来判断Activity2的回传数据的。方法重写中可以通过switch(requestCode)的方法来进行。onActivityResult(requestCode, resultCode, IntentData)在Activity2 finish后会自动调用执行的,故其参数requestCode与startActivityForResult(myIntentData, requestCode)中的requestCode是对应的,例如某一按键启动startActivityForResult(myIntentData, requestCode)时传入requestCode = 13,那么在onActivityResult(requestCode, resultCode, IntentData)方法中进行switch判读时,case 13就对应处理该按键对应的回传数据。
与requestCode对应,resultCode用来区分是哪一个Activity2回传的数据。由于在Activity1中,可以通过startActivityForResult方法打开多个Activity2,故当多个Activity2 finish时,会将各自的数据回传给Activity1,为了区分是哪一个Activity2回传的数据,Activity2会回传自己的结果码,也就是resultCode。同样,在Activity1的方法onActivityResult(requestCode, resultCode, IntentData)中,通过switch(resultCode)就可以处理不同的回传数据。
具体举例:
在MainActivity中,通过startActivityForResult方法向OtherActivity中传递数据,并要求OtherActivity返回数据,即For Result
在OtherActivity中接收数据并做相应的处理后,再使用setResult方法回传数据给MainActivity
执行结果:
点击Jump,发送“非非年龄27”
收到后显示“非非年龄27”
点击“Finish”后,结束OtherActivity活动,数据自动传回MainActivity,在MainActivity中自动调用onActivity方法进行处理,如Toast显示“小象25”
0 0
- Activity活动切换及数据回传
- Activity活动切换及数据回传
- activity数据回传过程(返回数据给上一个活动)
- Activity页面跳转及回传数据
- Intent携带数据切换Activity
- Android Activity/活动页面切换实现动画效果
- 安卓 自定义activity(活动)切换效果
- activity间按钮和滑动切换,bundle传数据
- Activity 活动
- 活动Activity
- Activity活动
- Activity和多个fragments的切换及数据的传递
- Activity回传数据
- activity回传数据
- Activity之间切换以及数据传递
- Activity切换时保存数据的方法
- Activity切换中Intent传递数据、对象
- Android之Activity切换和数据传递
- 用了apache-shiro后,HttpSession.getServletContext() API无法正常工作了
- HTML常用标签(4)————锚点标签
- targetFilterLifecycle的作用
- HTML常用标签(5)————图像标签&图像地图
- Android驱动开发环境搭建
- Activity活动切换及数据回传
- 去除浮躁,1万小时前不琢磨挣钱的事
- Remember that ordinal parameters are 1-based!
- Android for MSM Project
- 无插件Vim编程技巧
- Standard LPN check Sql
- Python学习第1节(win7编译环境搭建和第一个程序)
- POJ-1475-Pushing Boxes(BFS)
- public Session session()