首页 > 代码库 > Android程序中Acticity间传递数据

Android程序中Acticity间传递数据

  在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 }
Person 类

 

  在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();