在Android開發過程當中,在不一樣的Acitivity之間傳遞數據的狀況是很是常見的。我花費了一點時間來總結Acitivity之間的數據傳遞,記錄下來。java
一、簡單傳遞鍵值對ide
這種傳遞方式很是簡單,只須要在構造Intent加入相應的鍵值對。this
在ActivityA中,調用Intent的代碼以下:spa
1 Intent i = new Intent(ActivityA.this,ActivityB.class); 2 i.putExtra("name", "Finlay Liu"); 3 i.putExtra("age", "19"); 5 startActivity(i);
在ActivityB中,能夠直接更加相應的鍵值對讀取便可。code
1 String s = getIntent().getStringExtra("name") + " : " + getIntent().getStringExtra("age"); 4 Toast.makeText(this, s, Toast.LENGTH_SHORT).show();
二、傳遞對象對象
在不一樣的Acitivity之間傳遞對象,也是一種很是常見的作法。以前沒有仔細閱讀Android開發文檔,因此以前我在寫Android代碼的時候,不一樣Acitivity之間對象傳遞是經過靜態類來實現的。起始在Activity間傳遞對象也很是簡單,與上面的傳遞鍵值對方法相似。
blog
首先是對須要傳遞的類加上序列化接口:接口
1 package com.finlayliu.passingobject; 2 3 import java.io.Serializable; 4 5 public class Person implements Serializable { 6 7 private static final long serialVersionUID = 1L; 8 9 public int getId() { 10 return id; 11 } 12 13 public void setId(int id) { 14 this.id = id; 15 } 16 17 public String getName() { 18 return name; 19 } 20 21 public void setName(String name) { 22 this.name = name; 23 } 24 25 public int getAge() { 26 return age; 27 } 28 29 public void setAge(short age) { 30 this.age = age; 31 } 32 33 private int id; 34 private String name; 35 private int age; 36 37 public Person() { 38 39 } 40 41 public Person(int id, String name, int age) { 42 this.id = id; 43 this.name = name; 44 this.age = age; 45 46 } 47 48 public String toString() { 49 return id + ":" + this.name + ":" + age; 50 } 51 }
在ActivityA中,調用Intent的代碼以下:ci
1 Intent i = new Intent(MainActivity.this, OtherActivity.class); 2 Person p = new Person(1, "Finaly Liu", 19); 3 i.putExtra("Person", p); 4 5 startActivity(i);
在ActivityB中,讀取相應的對象代碼以下:開發
1 Person p = (Person) getIntent().getSerializableExtra("Person"); 2 Toast.makeText(getApplicationContext(), p.toString(), Toast.LENGTH_LONG).show();