intent--Activity之间数据传递之Intent数据传递
intent传值:
4,intent传集合
3,intent传对象,
2,传递后有返回值的情况:
当需要从目标Activity回传数据到原Activity时,可以使用上述方法定义一个新的Intent来传递数据,
也可以使用 startActivityForResult (Intent intent, int requestCode);
1,传递后无返回值的情况:从当前Activity传递到目标Activity后有无返回值:
===========
4,intent传集合
但是有的时候又要传递多个实体类。就要把这些实体类的对象放在一个List中传递。
Intent.putExtras(key, value)几乎可以包括各种类型的值,但是却没有类似List<Object>之类的传递参数。
今天用到的时候试了下,
发现可以把list强转成Serializable类型,然后通过putExtras(key, (Serializable)list)方法传递过去。
接受的时候用(List<YourObject>) getIntent().getSerializable(key)就可以接受到List<YourObject>数据了
同样这个实体类必须要实现Serializable接口,切记切记,不然会报错。
3,intent传对象;
Intent不能直接传递t对象,需要通过bundle来传递
向intent中添加数据:
Intent intent_share = new Intent(MainActivity.this,ShareActivity.class);
Bundle bundle = new Bundle();
bundle.putSerializable("article", article);
intent_share.putExtras(bundle);
startActivity(intent_share);
接收数据:
Bundle bundle = getIntent().getExtras();
Article article = (Article) bundle.get("article");
其中Article是一个实体类,这个类必须序列化才行(实现Serializable接口)。
2,传递后有返回值的情况:
当需要从目标Activity回传数据到原Activity时,可以使用上述方法定义一个新的Intent来传递数据,
也可以使用 startActivityForResult (Intent intent, int requestCode);
在起始Activity中,发送数据:
Intent intent = new Intent();
intent.setClass(ThisActivity.this,TargetActivity.class);
intent.putExtra("username",username);//也可以绑定数组
intent.putExtra("userpass",userpass);
startActivityForResult(intent,1);
//需要重写onActivityResult方法
protected void onActivityResult(int requestCode, int resultCode, Intent intent){
super.onActivityResult(requestCode,resultCode,intent);
//判断结果码是否与回传的结果码相同
if(resultCode == 1){
String name = intent.getStringExtra("name");
String pass = intent.getStringExtra("pass);
//对数据进行操作
......
}
在目标Activity中,接收数据:
Intent intent = getIntent();
String name = intent.getStringExtra("username");
String pass = intent.getStringExtra("userpass);
//从EditText中获取新的数据给name和pass
name = editText1.getText().toString();
pass = editText2.getText().toString()
//数据发生改变,需要把改变后的值传递回原来的Activity
intent.putExtra("name",name);
intent.putExtra("pass",pass);
//setResult(int resultCode,Intent intent)方法
setResult(1,intent);
//销毁此Activity,摧毁此Activity后将自动回到上一个Activity
finish();
1.传递后无返回值的情况:从当前Activity传递到目标Activity后有无返回值
在起始Activity中,发送数据
Intent intent = new Intent();
intent.setClass(ThisActivity.this,TargetActivity.class);
intent.putExtra("username",username);//也可以绑定数组
intent.putExtra("userpass",userpass);
startActivity(intent);
在目标Activity中,接收数据:
//获得意图
Intent intent = getIntent();
String name = intent.getStringExtra("username");
String pass = intent.getStringExtra("userpass);
也可以适用Bundle(捆)--在起始Activity中,发送数据:
Intent intent = new Intent();
intent.setClass(ThisActivity.this,TargetActivity.class);
//一次绑定多个数据
Bundle bundle = new Bundle();
bundle.putString("username",username);
bundle.putString("userpass",userpass);
intent.putExtras(bundle);
startActivity(intent);
在目标Activity中,接收数据:
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
String name = bundle.getString("username");
String pass = bundle.getString("userpass");
相关文章
- php如何在mysql里批量插入数据
- MYSQL查询今天、昨天、7天、近30天、本月、上一月 数据
- 【COCOS2DX-LUA 脚本开发之十一】C/C++与LUA之间进行数据函数交互以及解决“PANIC: UNPROTECTED ERROR IN CALL TO LUA API (ATTEMPT TO INDEX A NIL VALUE)”的问题
- WCF入门(一)--Request Entity Too large 传输的数据量过大
- 小白学数据分析--数据指标 累计用户数的使用
- 数据中台的终点是DataOps还是DaaS?
- mysql常用基础操作语法(四)--对数据的简单无条件查询及库和表查询【命令行模式】
- 当年的Java考试:JAVA&移动应用&大数据-大三-社区疫苗接种管理系统(全部源码·保姆式呵护)
- Linux下的共享内存--通过指针访问共享内存中的数据
- 11.第三章 Linux文件管理和IO重定向 -- 文件操作命令、文件元数据和节点表结构(四)
- lotus 检索数据 filecoin.tools
- 数据转换
- Django学习12 -- 数据表格展示
- scrapy 采集数据存入excel
- 【计算机三级数据库技术】第6章 高级数据查询--附思维导图
- 【数据挖掘】金山办公2020校招大数据和机器学习算法笔试题
- 【大数据】大数据之分布式协调服务--Zookeeper 教程
- jsonp获取json数据
- 【YOLOv7】Python基于YOLOv7的人员跌倒检测系统(源码&部署教程&数据集)
- 跟我一起学点数据分析 -- 第五天:数据可视化(matplotlib部)
- pytorch中数据在CPU与GPU之间的切换
- 07-rsync企业真实项目备份案例实战(需求收集--服务器配置---客户端配置---报警机制---数据校验---邮件告警)
- FPGA--VGA显示实验之Verilog代码描述(图像数据生成模块)