Android 开发中使用Intent传递数据的方法

Activity之间通过Intent传递值,支持基本数据类型和String对象及它们的数组对象byte、byte[]、char、char[]、boolean、boolean[]、short、short[]、int、int[]、long、long[]、float、float[]、double、double[]、String、String[],还有采用实现Serializable、Parcelable接口的类对象传递数据的两种方法:一种是Bundle.putSerializable(Key,Object);另一种是Bundle.putParcelable(Key, Object)

例如:

  1. import android.os.Parcel;    
  2. import android.os.Parcelable;    
  3. public class Book implements Parcelable {    
  4.     private String bookName;    
  5.     private String author;    
  6.     private int publishTime;    
  7.         
  8.     public String getBookName() {    
  9.         return bookName;    
  10.     }    
  11.     public void setBookName(String bookName) {    
  12.         this.bookName = bookName;    
  13.     }    
  14.     public String getAuthor() {    
  15.         return author;    
  16.     }    
  17.     public void setAuthor(String author) {    
  18.         this.author = author;    
  19.     }    
  20.     public int getPublishTime() {    
  21.         return publishTime;    
  22.     }    
  23.     public void setPublishTime(int publishTime) {    
  24.         this.publishTime = publishTime;    
  25.     }    
  26.         
  27.     public static final Parcelable.Creator<Book> CREATOR = new Creator<Book>() {    
  28.         public Book createFromParcel(Parcel source) {    
  29.             Book mBook = new Book();    
  30.             mBook.bookName = source.readString();    
  31.             mBook.author = source.readString();    
  32.             mBook.publishTime = source.readInt();    
  33.             return mBook;    
  34.         }    
  35.         public Book[] newArray(int size) {    
  36.             return new Book[size];    
  37.         }    
  38.     };    
  39.         
  40.     public int describeContents() {    
  41.         return 0;    
  42.     }    
  43.     public void writeToParcel(Parcel parcel, int flags) {    
  44.         parcel.writeString(bookName);    
  45.         parcel.writeString(author);    
  46.         parcel.writeInt(publishTime);    
  47.     }    
  48. }   

实现Serializable接口:

  1. import java.io.Serializable;    
  2. public class Person implements Serializable {    
  3.     private static final long serialVersionUID = -7060210544600464481L;     
  4.     private String name;    
  5.     private int age;    
  6.     public String getName() {    
  7.         return name;    
  8.     }    
  9.     public void setName(String name) {    
  10.         this.name = name;    
  11.     }    
  12.     public int getAge() {    
  13.         return age;    
  14.     }    
  15.     public void setAge(int age) {    
  16.         this.age = age;    
  17.     }    
  18.         
  19. }   

 

这样在Activity中就可编写传递数据代码:

  1. Intent mIntent = new Intent(this, 地址Activity.class);    
  2. Bundle mBundle = new Bundle();    
  3. //采用parcelable传输数据  
  4. mBundle.putParcelable("data", mBook);    
  5. //采用serializable传输数据  
  6. mBundle.putSerializable("data", items);  
  7. mIntent.putExtras(mBundle);    
  8.         
  9. startActivity(mIntent);  

接受数据可以采用:

  1. Intent intent = getIntent();  
  2. ArrayList<Map<String, String>> items = (ArrayList<Map<String, String>>)intent.getExtras().get("data");  
posted @ 2015-06-16 22:41  叫我程某某  阅读(907)  评论(0编辑  收藏  举报