直接开正题,Intent传递值就是平常那些很简单的,接下来介绍传递 对象,和 对象数组

1 .intent 传递自定义的 对象 -

实体类继承  Serializable


public class AA implements Serializable{

	public String  a;
public String aa;
public String aaa; }

intent塞入数据端

				AA a = new AA();
a.a="a";
a.aa ="aa";
a.aaa = "aaa"; Intent in = new Intent().setClass(MainActivity.this, MainActivity1.class);
Bundle bu = new Bundle();
bu.putSerializable("enty", a);
in.putExtras(bu);
startActivity(in);

intent 接收数据端

 	AA a =(AA)this.getIntent().getExtras().getSerializable("enty");
System.out.println("a.a ="+ app.a);
System.out.println("a.aa ="+ app.aa);
System.out.println("a.aaa ="+ app.aaa);

实体类类继承  Parcelable(简单介绍一下:

1.什么是Parcelable ?

Parcelable,定义了将数据写入Parcel,和从Parcel中读出的接口。一个实体(用类来表示),如果需要封装到消息中去,就必须实现这一接口,实现了这一接口,该实体就成为“可打包的”了。

2.Parcelable 传递对象

Android序列化对象主要有两种方法:

1.1实现Serializable接口是JavaSE本身就支持的;

1.2实现Parcelable接口,Parcelable是Android特有的功能,效率比实现Serializable接口高,像用于Intent数据传递也都支持,而且还可以用在进程间通信(IPC),

除了基本类型外,只有实现了Parcelable接口的类才能被放入Parcel中。

Parcelable的接口的定义:

public interface Parcelable {
//内容描述接口
public int describeContents();
//写入接口函数,打包
public void writeToParcel(Parcel dest, int flags);
//1.读取接口,目的是要从Parcel中构造一个实现了Parcelable的类的实例处理。因为实现类在这里还是不可知的,所以需要用到模板的方式,继承类名通过模板参数传入。
//2.为了能够实现模板参数的传入,这里才定义CREATOR嵌入接口,有两个接口函数分别返回单个和多个继承类实例。
public interface Creator<T> {
public T createFromParcel(Parcel source);
public T[] newArray(int size);
}
public class AA implements Parcelable{

	public String  a;
public String aa;
public String aaa; @Override
public int describeContents() {
return 0;
} @Override
public void writeToParcel(Parcel parcel, int flags) {
//序列化对象,必须按照声明顺序
parcel.writeString(a);
parcel.writeString(aa);
parcel.writeString(aaa); }
//必须实现这个接口,它的作用是从 percel中读出来数据,顺序必须按照声明顺序
public static final Parcelable.Creator<AA> CREATOR = new Creator<AA>(){
@Override
public AA createFromParcel(Parcel source) {
AA app= new AA();
app.a = source.readString();
app.aa = source.readString();
app.aaa = source.readString();
return app;
}
@Override
public AA[] newArray(int size) {
return new AA[size];
} };
}

intent塞入数据端

	                        AA a = new AA();
a.a="a";
a.aa ="aa";
a.aaa = "aaa"; Intent in = new Intent().setClass(MainActivity.this, MainActivity1.class);
Bundle bu = new Bundle();
bu.putParcelable("enty", a);
in.putExtras(bu);
startActivity(in);

接收数据端

 // 可以这样app =(AA)this.getIntent().getParcelableExtra("enty");
//也可以这样写,上面的也是
app =(AA)this.getIntent().getExtras().getParcelable("enty");
System.out.println("a.a ="+ app.a);
System.out.println("a.aa ="+ app.aa);
System.out.println("a.aaa ="+ app.aaa);

2。 下来是 自定义对象 数组传递

实体类类继承  Parcelable

intent塞入数据端

                      List<AA> list_aa =new ArrayList<AA>();
AA a = new AA();
a.a="a";
a.aa ="aa";
a.aaa = "aaa"; AA a1 = new AA();
a1.a="a1";
a1.aa ="aa1";
a1.aaa = "aaa1"; list_aa.add(a);
list_aa.add(a1); Intent in = new Intent().setClass(MainActivity.this, MainActivity1.class);
Bundle bu = new Bundle();
bu.putParcelableArrayList("list", (ArrayList<? extends Parcelable>) list_aa); //---
in.putExtras(bu);
startActivity(in);

接收list数据端

List<AA> aa =this.getIntent().getExtras().getParcelableArrayList("list");

			for (AA aa2 : aa) {
System.out.println("list_a.a = "+ aa2.a);
System.out.println("list_a.aa = "+ aa2.aa);
System.out.println("list_a.aaa = "+ aa2.aaa);
System.out.println("================================="); }

关于 android Intent 传对象和对象数组的一些操作的更多相关文章

  1. Android Intent 基本使用及对象构成

    Intent基本使用 Intent可以理解为不同组件通信的媒介或者信使. Intent可以启动一个Activity,也可以启动一个Service,还可以发起一个广播Broadcast. 具体方法如下表 ...

  2. android intent 传递list或者对象

    (转:http://www.cnblogs.com/lee0oo0/archive/2012/09/24/2699805.html) 方法一: 如果单纯的传递List<String> 或者 ...

  3. Android intent传递list或对象

    方法一: 如果单纯的传递List<String> 或者List<Integer>的话 就可以直接使用 Java代码 intent.putStringArrayListExtra ...

  4. android intent 传数据

    1. 基本数据类型 Intent intent = new Intent(); intent.setClass(activity1.this, activity2.class); //描述起点和目标 ...

  5. 在Android中通过Intent使用Bundle传递对象

    IntentBundle传递对象SerializableParcelable Android开发中有时需要在应用中或进程间传递对象,下面详细介绍Intent使用Bundle传递对象的方法.被传递的对象 ...

  6. intent传值传对象跳转

    intent传值传对象跳转 1.传值 //原activity中存入一个字段 intent = new Intent(From.this, To.class); intent.putExtra(&quo ...

  7. Intent之对象传递(Parcelable传递对象和对象集合)

    接着上一篇文章,以下我们讨论一下怎样利用Parcelable实现Intent之间对象的传递 一.实现对象传递 首先创建User.java实现Parcelable接口: package org.yayu ...

  8. android中用Intent传数据,如果用传递的是一个类,就将类实现Parcelable接口

    Parcelable,内存单位,跨进程使用,或者intent传递对象的时候使用.android中用Intent传数据,如果用传递的是一个对象,就将对象实现Parcelable接口,而不是将对象序列化. ...

  9. uniapp中拿到base64转blob对象,或base64转bytes字节数组,io操作写入字节流文件bytes

    1. uniAPP中拿到附件的base64如何操作,如word文件 /*** 实现思路:* 通过native.js的io操作创建文件,拿到平台绝对路径* 再通过原生类进行base64解码,拿到字节流b ...

随机推荐

  1. null类型的字段加1

    很高兴今天学到了一种新方法. 数据库中字段类型为Long ,值可能为null,也可能是某一数.因此对该字段数值进行 +1操作时需要判断该值是null还是数值. 同时实现更新操作.具体如下: updat ...

  2. 获取xml文件

    <?xml version="1.0" encoding="utf-8" ?><ArrayOfSystemRool xmlns:xsi=&qu ...

  3. iOS多线程的基本使用

    一.NSThread: 程序就是一段代码,是静态的概念 进程是运行起来的程序,是动态的概念,进程需要占内存空间 线程是进程的基本单位,一个进程至少有一个线程,iOS程序默认有一个主线程,用来显示和操作 ...

  4. ucenter 同步登录总结

    部署: discuz默认安装后就安装了uc_server应用 各应用根目录必须有uc_client文件夹. 下载ucenter程序查看范例程序 应用管理中,应用的主 URL必须指向到应用的根目录,应用 ...

  5. hdu4745

    区间DP,这类题目还是非常常见的,可惜平时都不怎么在意.一到比赛就弱得像鸟一样,真心囧. 题目要求很简单,就是一个最长的回文子序列,输出该子序列的长度. 区间DP,最常用的一种策略(类似于数学归纳法) ...

  6. Fragment和activity之间的通信

    1>fragment可以调用getactivity()方法获取它所在的activity. 2>activity可以调用FragmentManager的findFragmentById()或 ...

  7. $.browser.msie jq解析不出来的原因及解决方法

    检查是否为 IE6:// Oldif ($.browser.msie && 7 > $.browser.version) {}// Newif ('undefined' == t ...

  8. 练习-checkbox 全选 ,反选, 单选,以及取值

    1.方法1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w ...

  9. Java 拾遗

    1.选择表达式中的类型转换 public class Test { public void static main(String args[]){ int i = 5; System.out.prin ...

  10. 谈谈文件增量同步算法:RSYNC和CDC

    谈谈文件增量同步算法:RSYNC和CDC 分类: 数据同步 增量备份 版权声明:本文为博主原创文章,未经博主允许不得转载. 最近在研究文件的增量同步问题,着重研究了文件差异编码部分,因为这个其实是文件 ...