在Android開發過程中,在不同的Acitivity之間傳遞數據的情況是非常常見的。我花費了一點時間來總結Acitivity之間的數據傳遞,記錄下來。
1、簡單傳遞鍵值對
這種傳遞方式非常簡單,只需要在構造Intent加入相應的鍵值對。
在ActivityA中,調用Intent的代碼如下:
1 Intent i = new Intent(ActivityA.this,ActivityB.class);
2 i.putExtra("name", "Finlay Liu");
3 i.putExtra("age", "19");
5 startActivity(i);
在ActivityB中,可以直接更加相應的鍵值對讀取即可。
1 String s = getIntent().getStringExtra("name") + " : " + getIntent().getStringExtra("age");
4 Toast.makeText(this, s, Toast.LENGTH_SHORT).show();
2、傳遞對象
在不同的Acitivity之間傳遞對象,也是一種非常常見的做法。之前沒有仔細閱讀Android開發文檔,所以之前我在寫Android代碼的時候,不同Acitivity之間對象傳遞是通過靜態類來實現的。起始在Activity間傳遞對象也非常簡單,與上面的傳遞鍵值對方法類似。
首先是對需要傳遞的類加上序列化接口:
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的代碼如下:
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();