zoukankan      html  css  js  c++  java
  • 关于 android Intent 传对象和对象数组的一些操作

     

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

    分类: android GUI

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

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

    实体类继承  Serializable

    [java] view plaincopy
     
    1.   
    [java] view plaincopy
     
    1. public class AA implements Serializable{  
    2.   
    3.     public String  a;  
    4.     public String  aa;  
    5.     public String  aaa;  
    6.       
    7.       
    8. }  

    intent塞入数据端
    [java] view plaincopy
     
    1. AA a = new AA();  
    2. a.a="a";  
    3. a.aa ="aa";  
    4. a.aaa = "aaa";  
    5.   
    6. Intent in = new Intent().setClass(MainActivity.this, MainActivity1.class);  
    7. Bundle bu = new Bundle();  
    8. bu.putSerializable("enty", a);  
    9. in.putExtras(bu);  
    10. 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.   
    3.     public String  a;  
    4.     public String  aa;  
    5.     public String  aaa;  
    6.   
    7.     @Override  
    8.     public int describeContents() {  
    9.         return 0;  
    10.     }  
    11.   
    12.     @Override  
    13.     public void writeToParcel(Parcel parcel, int flags) {  
    14.         //序列化对象,必须按照声明顺序  
    15.         parcel.writeString(a);  
    16.         parcel.writeString(aa);  
    17.         parcel.writeString(aaa);  
    18.           
    19.     }  
    20.     //必须实现这个接口,它的作用是从 percel中读出来数据,顺序必须按照声明顺序  
    21.     public static final Parcelable.Creator<AA> CREATOR  = new Creator<AA>(){  
    22.         @Override  
    23.         public AA createFromParcel(Parcel source) {  
    24.             AA app=  new AA();  
    25.             app.a = source.readString();  
    26.             app.aa = source.readString();  
    27.             app.aaa = source.readString();  
    28.             return app;  
    29.         }  
    30.         @Override  
    31.         public AA[] newArray(int size) {  
    32.             return new AA[size];  
    33.         }  
    34.           
    35.     };  
    36. }  
    intent塞入数据端
    [java] view plaincopy
     
    1.                      AA a = new AA();  
    2. a.a="a";  
    3. a.aa ="aa";  
    4. a.aaa = "aaa";  
    5.   
    6. Intent in = new Intent().setClass(MainActivity.this, MainActivity1.class);  
    7. Bundle bu = new Bundle();  
    8. bu.putParcelable("enty", a);  
    9. in.putExtras(bu);  
    10. 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.   
    7.                        AA a1 = new AA();  
    8. a1.a="a1";  
    9. a1.aa ="aa1";  
    10. a1.aaa = "aaa1";  
    11.   
    12. list_aa.add(a);  
    13. list_aa.add(a1);  
    14.   
    15. Intent in = new Intent().setClass(MainActivity.this, MainActivity1.class);  
    16. Bundle bu = new Bundle();  
    17. bu.putParcelableArrayList("list", (ArrayList<? extends Parcelable>) list_aa);  //---  
    18. in.putExtras(bu);  
    19. startActivity(in);  
    接收list数据端
    [java] view plaincopy
     
    1. List<AA> aa =this.getIntent().getExtras().getParcelableArrayList("list");  
    2.               
    3.             for (AA aa2 : aa) {  
    4.                 System.out.println("list_a.a = "+ aa2.a);  
    5.                 System.out.println("list_a.aa = "+ aa2.aa);  
    6.                 System.out.println("list_a.aaa = "+ aa2.aaa);  
    7.                 System.out.println("=================================");  
    8.                   
    9.             }  



     
  • 相关阅读:
    【leetcode】1295. Find Numbers with Even Number of Digits
    【leetcode】427. Construct Quad Tree
    【leetcode】1240. Tiling a Rectangle with the Fewest Squares
    【leetcode】1292. Maximum Side Length of a Square with Sum Less than or Equal to Threshold
    【leetcode】1291. Sequential Digits
    【leetcode】1290. Convert Binary Number in a Linked List to Integer
    【leetcode】1269. Number of Ways to Stay in the Same Place After Some Steps
    【leetcode】1289. Minimum Falling Path Sum II
    【leetcode】1288. Remove Covered Intervals
    【leetcode】1287. Element Appearing More Than 25% In Sorted Array
  • 原文地址:https://www.cnblogs.com/duanweishi/p/4480088.html
Copyright © 2011-2022 走看看