Android通过Intent传递对象
1、传递Serializable方式类对象
首先创建一个序列化类:User
import java.io.Serializable; public class User implements Serializable {
private int ID;
private String UserName;
private String PWD;
public final void setID(int value)
{
ID = value;
}
public final int getID()
{
return ID;
}
public final void setUserName(String value)
{
UserName = value;
}
public final String getUserName()
{
return UserName;
}
public final void setPWD(String value)
{
PWD = value;
} public final String getPWD()
{
return PWD;
} }
登录窗体登录后传递内容
Intent intent = new Intent();
intent.setClass(Login.this, MainActivity.class);
Bundle bundle = new Bundle();
bundle.putSerializable("user", user);
intent.putExtras(bundle);
this.startActivity(intent);
接收端
Intent intent = this.getIntent();
user=(User)intent.getSerializableExtra("user");
以上就可以实现对象的传递。
补充:
如果传递的是List<Object>,可以把list强转成Serializable类型,而且object类型也必须实现了Serializable接口
Intent.putExtras(key, (Serializable)list)
接收
(List<YourObject>)getIntent().getSerializable(key)
2、传递数据值
(1)用于Activity之间的数据传递
在起始Activity中,发送数据:
Intent intent = new Intent();
//设置起始Activity和目标Activity,表示数据从这个Activity传到下个Activity
intent.setClass(ThisActivity.this,TargetActivity.class);
//绑定数据
intent.putExtra("username",username);//也可以绑定数组
intent.putExtra("userpass",userpass);
//打开目标Activity
startActivity(intent);
在目标Activity中,接收数据:
//获得意图
Intent intent = getIntent();
//读取数据
String name = intent.getStringExtra("username");
String pass = intent.getStringExtra("userpass);
(2)也适用Bundle(捆)
在起始Activity中,发送数据:
Intent intent = new Intent();
//设置起始Activity和目标Activity,表示数据从这个Activity传到下个Activity
intent.setClass(ThisActivity.this,TargetActivity.class);
//一次绑定多个数据
Bundle bundle = new Bundle();
bundle.putString("username",username);
bundle.putString("userpass",userpass);
intent.putExtras(bundle);
//打开目标Activity
startActivity(intent);
在目标Activity中,接收数据:
//获得意图
Intent intent = getIntent();
//读取数据
Bundle bundle = intent.getExtras();
String name = bundle.getString("username");
String pass = bundle.getString("userpass");
3、当需要从目标Activity回传数据到原Activity时,可以使用上述方法定义一个新的Intent来传递数据,也可以使用startActivityForResult(Intent intent, int requestCode)方法。
在起始Activity中,发送数据:
Intent intent = new Intent();
//设置起始Activity和目标Activity,表示数据从这个Activity传到下个Activity
intent.setClass(ThisActivity.this,TargetActivity.class);
//绑定数据
intent.putExtra("username",username);//也可以绑定数组
intent.putExtra("userpass",userpass);
//打开目标Activity
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();
Android通过Intent传递对象的更多相关文章
- android#使用Intent传递对象
参考自<第一行代码>——郭霖 Intent的用法相信你已经比较熟悉了,我们可以借助它来启动活动.发送广播.启动服务等.在进行上述操作的时候,我们还可以在Intent中添加一些附加数据,以达 ...
- Android中Intent传递对象的两种方法(Serializable,Parcelable)
今天要给大家讲一下Android中 Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializable(Key,Object);另一种是 Bundle.putP ...
- [转]Android中Intent传递对象的两种方法(Serializable,Parcelable)
http://blog.csdn.net/xyz_lmn/article/details/5908355 今天要给大家讲一下Android中Intent中如何传递对象,就我目前所知道的有两种方法,一种 ...
- Android高手进阶教程(十七)之---Android中Intent传递对象的两种方法(Serializable,Parcelable)!
[转][原文] 大家好,好久不见,今天要给大家讲一下Android中Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializable(Key,Object); ...
- 【转】Android中intent传递对象和Bundle的用法
原文网址:http://blog.csdn.net/lixiang0522/article/details/8642202 android中的组件间传递的对象一般实现Parcelable接口,当然也可 ...
- Intent传递对象的几种方式
原创文章.转载请注明 http://blog.csdn.net/leejizhou/article/details/51105060 李济洲的博客 Intent的使用方法相信你已经比較熟悉了,Inte ...
- Android 通过 Intent 传递类对象或list对象
(转:http://www.cnblogs.com/shaocm/archive/2013/01/08/2851248.html) Android中Intent传递类对象提供了两种方式一种是 通过实现 ...
- Android 全局获取 Context 与使用 Intent 传递对象
=====================全局获取 Context======================== Android 开发中很多地方需要用到 Context,比如弹出 Toast.启动活 ...
- Android 通过 Intent 传递类对象
Android中Intent传递类对象提供了两种方式一种是 通过实现Serializable接口传递对象,一种是通过实现Parcelable接口传递对象. 要求被传递的对象必须实现上述2种接口中的一种 ...
随机推荐
- c#连接oracle的几种方式
一:通过System.Data.OracleClient(需要安装Oracle客户端并配置tnsnames.ora)1. 添加命名空间System.Data.OracleClient引用2. usin ...
- Python基础3:字符编码
http://www.jb51.net/article/64917.htm Python 编码为什么那么蛋疼? https://i.cnblogs.com/EditPosts.aspx?postid= ...
- RocketMQ-Filer
一.搭建RocketMQ集群 我搭建的是2-master no slave模式,所以在${rocketmq}/conf/2m-noslave/下的 brokder-*.properties 中添加 f ...
- 关于 IOC和spring基本配置详解
Spring 中的两个概念 IOC控制反转(也叫依赖注入DI): AOP面向切面编程: 控制反转:当某个java对象需要(依赖)另一个java对象是,不是直接创建依赖对象,而是由实现IOC的容器来创建 ...
- 如何在虚拟机安装的Win10系统里快速打开【此电脑】图标?(图文详解)
不多说,直接上干货! 为什么要写写这篇博客? 技多不压身,很多小技巧很重要,方便自己. 比如,对于这样的工具,个人来讲,玩过试用期,意味着你若不找点法子,是不行的.否则你没得玩了. 全网最详细的Tab ...
- Chapter 3 Phenomenon——14
They wheeled me away then, to X-ray my head. 他们把我移到了一边用X光照射我的头. 他们把我放到轮椅上,推着我去做头部X光检查. I told them t ...
- Linux 搭建Hadoop集群错误锦集
一.Hadoop集群配置好后,执行start-dfs.sh后报错,一堆permission denied zf sbin $ ./start-dfs.sh Starting namenodes on ...
- kafka报错处理
Kafka报错处理 1. 记一次kafka报错处理 Kafka停止后,再启动的时候发生了报错: [2017-10-27 09:43:18,313] INFO Recovering unflus ...
- 设置input标签placeholder字体颜色
有时会遇到这样的需求,输入框的默认提示文字与用户输入的文字不同. <input className="city" placeholder="城市"/> ...
- ASP.NET MVC 学习笔记-3.面向对象设计原则
在设计程序.系统框架或者类时,最主要考虑的事情就是代码的可扩展性,而不是完成功能即可.因此,提倡使用面向对象设计的最佳实践和基本原则. 1. 单一职责原则(SRP:The Single R ...