关于 android Intent 传对象和对象数组的一些操作

关于 android Intent 传对象和对象数组的一些操作

分类: android GUI2013-10-10 00:47 2551人阅读 评论(5) 收藏 举报

androidintent传递对象传递对象数组

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

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

实体类继承  Serializable

[java] view plaincopy

[java] view plaincopy

  1. public class AA implements Serializable{
  2. public String  a;
  3. public String  aa;
  4. public String  aaa;
  5. }

intent塞入数据端

[java] view plaincopy

  1. AA a = new AA();
  2. a.a="a";
  3. a.aa ="aa";
  4. a.aaa = "aaa";
  5. Intent in = new Intent().setClass(MainActivity.this, MainActivity1.class);
  6. Bundle bu = new Bundle();
  7. bu.putSerializable("enty", a);
  8. in.putExtras(bu);
  9. startActivity(in);

intent 接收数据端

[java] view plaincopy

  1. AA a =(AA)this.getIntent().getExtras().getSerializable("enty");
  2. System.out.println("a.a ="+  app.a);
  3. System.out.println("a.aa ="+  app.aa);
  4. 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的接口的定义:

[java] view plaincopy

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

[java] view plaincopy

  1. public class AA implements Parcelable{
  2. public String  a;
  3. public String  aa;
  4. public String  aaa;
  5. @Override
  6. public int describeContents() {
  7. return 0;
  8. }
  9. @Override
  10. public void writeToParcel(Parcel parcel, int flags) {
  11. //序列化对象,必须按照声明顺序
  12. parcel.writeString(a);
  13. parcel.writeString(aa);
  14. parcel.writeString(aaa);
  15. }
  16. //必须实现这个接口,它的作用是从 percel中读出来数据,顺序必须按照声明顺序
  17. public static final Parcelable.Creator<AA> CREATOR  = new Creator<AA>(){
  18. @Override
  19. public AA createFromParcel(Parcel source) {
  20. AA app=  new AA();
  21. app.a = source.readString();
  22. app.aa = source.readString();
  23. app.aaa = source.readString();
  24. return app;
  25. }
  26. @Override
  27. public AA[] newArray(int size) {
  28. return new AA[size];
  29. }
  30. };
  31. }

intent塞入数据端

[java] view plaincopy

  1. AA a = new AA();
  2. a.a="a";
  3. a.aa ="aa";
  4. a.aaa = "aaa";
  5. Intent in = new Intent().setClass(MainActivity.this, MainActivity1.class);
  6. Bundle bu = new Bundle();
  7. bu.putParcelable("enty", a);
  8. in.putExtras(bu);
  9. startActivity(in);

接收数据端

[java] view plaincopy

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

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

实体类类继承  Parcelable

intent塞入数据端

[java] view plaincopy

  1. List<AA> list_aa =new ArrayList<AA>();
  2. AA a = new AA();
  3. a.a="a";
  4. a.aa ="aa";
  5. a.aaa = "aaa";
  6. AA a1 = new AA();
  7. a1.a="a1";
  8. a1.aa ="aa1";
  9. a1.aaa = "aaa1";
  10. list_aa.add(a);
  11. list_aa.add(a1);
  12. Intent in = new Intent().setClass(MainActivity.this, MainActivity1.class);
  13. Bundle bu = new Bundle();
  14. bu.putParcelableArrayList("list", (ArrayList<? extends Parcelable>) list_aa);  //---
  15. in.putExtras(bu);
  16. startActivity(in);

接收list数据端

[java] view plaincopy

  1. List<AA> aa =this.getIntent().getExtras().getParcelableArrayList("list");
  2. for (AA aa2 : aa) {
  3. System.out.println("list_a.a = "+ aa2.a);
  4. System.out.println("list_a.aa = "+ aa2.aa);
  5. System.out.println("list_a.aaa = "+ aa2.aaa);
  6. System.out.println("=================================");
  7. }

时间: 2024-10-08 22:26:59

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

android intent 传递list或者对象

方法一: 如果单纯的传递List<String> 或者List<Integer>的话 就可以直接使用 Java代码 intent.putStringArrayListExtra(name, value) intent.putIntegerArrayListExtra(name, value) 方法二: 如果传递的是List<Object>,可以把list强转成Serializable类型,然后通过 Java代码  putExtras(key, (Serializable

Android Intent 基本使用及对象构成

http://www.cnblogs.com/mengdd/archive/2013/03/18/2965839.html Intent Intent基本使用 Intent可以理解为不同组件通信的媒介或者信使. Intent可以启动一个Activity,也可以启动一个Service,还可以发起一个广播Broadcast. 具体方法如下表: 组件名称 方法名称 Activity startActivity() startActivityForResult() Service startServic

Android intent传递list或对象

方法一: 如果单纯的传递List<String> 或者List<Integer>的话 就可以直接使用 Java代码 intent.putStringArrayListExtra(name, value) intent.putIntegerArrayListExtra(name, value) 方法二: 如果传递的是List<Object>,可以把list强转成Serializable类型,然后通过 Java代码  putExtras(key, (Serializable

android intent 传数据

1. 基本数据类型 Intent intent = new Intent(); intent.setClass(activity1.this, activity2.class); //描述起点和目标 Bundle bundle = new Bundle(); //创建Bundle对象 bundle.putString("key", "包装的数据"); //装入数据 intent.putExtras(bundle); //把Bundle塞入Intent里面 start

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

IntentBundle传递对象SerializableParcelable Android开发中有时需要在应用中或进程间传递对象,下面详细介绍Intent使用Bundle传递对象的方法.被传递的对象需要先实现序列化,而序列化对象有两种方式:java.io.Serializable和android.os.Parcelable Java中使用的是Serializable,而谷歌在Android使用了自定义的Parcelable.两种序列化方式的区别:1.在使用内存的时候,Parcelable比Se

Android Intent传递对象小结

效果: 想看实例的,感兴趣的可以看之前的一篇文章 Android ViewPager Fragment实现选项卡 部分关键代码: public class SerializeActivity extends Activity implements Serializable { Button btnlist, btnParcelable, btnSerialze; private final String TAG = "SerializeActivity"; public final s

Android学习之Bitmap对象与字节数组相互转换

1.将Bitmap对象读到字节数组中 ByteArrayOutputStream baos = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos); byte[] datas = baos.toByteArray(); 2.将字节数组转为Bitmap对象 byte[] b = getIntent().getByteArrayExtra("bitmap"); Bitmap

Android Intent传递对象和集合

Article article = JsonUtils.getArticle(content); intent = new Intent(activity, CompositionCorrect.class); Bundle bundle = new Bundle(); bundle.putSerializable("ARTICLE", article); intent.putExtras(bundle); startActivity(intent); 获取传递的对象 private

Intent之对象传递(Serializable传递对象和对象集合)

Android中Intent传递类对象提供了两种方式一种是 通过实现Serializable接口传递对象,一种是通过实现Parcelable接口传递对象. 要求被传递的对象必须实现上述2种接口中的一种才能通过Intent直接传递. Intent中传递这2种对象的方法: Bundle.putSerializable(Key,Object); //实现Serializable接口的对象 Bundle.putParcelable(Key, Object); //实现Parcelable接口的对象 一.