zoukankan      html  css  js  c++  java
  • 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");
  • 相关阅读:
    TreeSelect组件:vmodel语法糖进行父子组件传值案例
    带 icon 的输入框:slot方式。slot="prefix"和slot="suffix"
    双向绑定vmodel与单向绑定vbind:value
    使用Set集合对List集合去重
    前端报错: error in ./src/assets/fonts/iconfont.svg?t=1523541245904,Module parse failed: Unexpected token (1:0),vue.config.js中引入chainWebpack后报错
    当主键不是id时,而是其他字段,那么该字段要加上@Id注解(除了表中指定主键,实体类中也要用@Id指定主键)
    java将文件转为base64字符串和将base64字符串转为文件
    父组件向子组件传递getList方法:provide/inject
    带卡片的input输入框
    C#中使用#if DEBUG
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/3531864.html
Copyright © 2011-2022 走看看