Android Activity之间的数据传递
2023-09-11 14:14:35 时间
1、向目标Activity传递数据:
1 Intent intent=new Intent(this,Main2Activity.class); 2 //可传递多种类型的数据 3 intent.putExtra("name","张三"); 4 intent.putExtra("age",12); 5 startActivity(intent);
2、在目标Activity中取出数据
1 Intent intent=getIntent(); 2 //用getXxxExtra()取出对应类型的数据。取出String只需要指定key 3 String name=intent.getStringExtra("name"); 4 //取出int要指定key,还要设置默认值,当intent中没有该key对应的value时,返回设置的默认值 5 int age=intent.getIntExtra("age",0);
目标Activity销毁时,可以回传数据给上一个Activity:
1、启动目标Activity,并设置一个请求码标识当前Activity
1 Intent intent=new Intent(this,Main2Activity.class); 2 //startActivityForResult()方法可以启动一个Activity,并可以设置一个int型的请求码标识当前Activity 3 startActivityForResult(intent,1);
2、在目标Activity中回传数据
1 //回传数据用得Intent可以新建,也可以用getIntent() 2 Intent intent=new Intent(); 3 //设置要回传的数据 4 intent.putExtra("name","张三"); 5 intent.putExtra("age",18); 6 //设置结果码标识当前Activity,回传数据。不管多早调用这句代码,这句代码在当前Activity销毁时才会执行,即此Activity销毁时才会回传数据。请求码和结果码不必相同。 7 setResult(1,intent);
回传时会把请求码、结果码、Intent数据封装为一个整体回传,请求码+结果码唯一标识回传的Intent
3、在上一级Activity中取出回传的数据
上一级Activity使用 startActivityForResult() 开启目标Activity后,当目标Activity销毁时,会向上一级Activity回传数据,并回调上一级 Activity的 onActivityResult() 方法。
我们需要重写上一级Activity的 onActivityResult() 方法获取回传数据。
1 //重写上一级Activity的onActivityResult()方法来获取目标Activity回传的数据 2 //三个形参,请求码、结果码、目标Activity回传的Intent 3 @Override 4 protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { 5 //调用基类的方法,此句代码会自动生成 6 super.onActivityResult(requestCode, resultCode, data); 7 if(requestCode==1){ //如果请求码是当前Activity的 8 if(resultCode==1){ //如果结果码是某个目标Activity的,就取出对应的数据。这个判断主要是可能有多个目标Activity向当前Activity回传数据,这些Intent数据中可能具有相同的key 9 String name=data.getStringExtra("name"); 10 int age=data.getIntExtra("age",0); 11 } 12 } 13 }
如过上一级Activity开启了多个目标Activity,回传数据时都是回调onActivityResult()方法,所以常常要根据结果码区分是哪个目标Activity回传的数据。如果只开启了一个目标Activity,则不必判断。
数据回传很常用,比如发微信朋友圈时,进入相册选择好图片后,会回传选择的图片的信息。
相关文章
- Nexus 7 平板已经可升级到 Android 4.2
- 在Eclipse下搭建Android开发环境教程
- [Android Pro] StarUML 版本破解
- 解决cocos2d-X 2.0版本后创建的Android项目提示org.cocos2dx.lib.Cocos2dxActivity找不到问题
- 【黑马Android】(02)短信发送器/布局演示/android下单位/android下Junit/保存数据/android下权限/xml解析和序列化
- Android调用微信登陆、分享、支付
- Android 开发之旅:短信的收发及在android模拟器之间实践(二)
- Android API之android.content.BroadcastReceiver
- Android API之android.content.AsyncQueryHandler
- Android API之android.provider.ContactsContract
- 《Android源码设计模式》--Builder模式
- Android:能接收HC05数据的APP
- android开发分享Android中外接键盘的检测的实现
- Android 强制横屏、竖屏
- Android Handler机制原理解析
- 【Android笔记29】Android中的数据存储技术之内部存储、外部存储
- Android 10.0 根据包名清理应用数据
- 【Android Gradle 插件】自定义 Gradle 任务 ④ ( Task#doLast 函数用法 | 自定义 Gradle 任务代码示例 )
- 【错误记录】Android Studio 编译时 lint 检查报错 ( WARNING: DSL element ‘android.dataBinding.enabled‘ is obsolet )
- 【Android 逆向】修改运行中的 Android 进程的内存数据 ( Android 命令行中获取要调试的应用进程的 PID | 进程注入调试进程内存的 so 库 )
- 【Android 逆向】使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 完整代码示例 ) ★★★
- Android 一键清理动画
- Android连接管理的评分机制(WIFI,Ethernet,BT,移动数据
- android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
- android开发,Android Studio在创建安卓虚拟设备(AVD)时,报错:Unknown Error