首页 > 代码库 > Intent传递对象

Intent传递对象

Intent的用法大家比较熟悉了,可以借助它来启动活动,发送广播,启动服务等。在进行上述操作的时候,还可以在Intent中添加一些附加数据, 以达到传值的效果,比如在FirstActivity中添加如下代码

Intent intent=new Intent(HLActivity.this,SecondActivity.class);

intent.putExtra("string_data","hello");

intent.putExtra("int_data",100);

startActivity(intent);

这里调用了Intent的putExtra()方法来添加要传递的数据,之后在SecondActivity中就可以得到这些值了,代码如下:

getIntent().getStringExtra("string_data");

getIntent().getIntExtra("int_data",0);

但是putExtra()方法中所支持的数据类型是有限的,虽然常用的一些数据类型它都支持,但是当你想去传递一些自定义对象的时候不方便。

使用Intent传递对象通常有两种实现方式,Serializable和Parcelable

Serializable是序列化的意思,表示将一个对象转换成可存储或可传输的状态。序列化后的对象可以在网络上进行传输,也可以存储到本地。序列化方法很简单,只需让一个类去实现Serializable这个接口就可以了。比如一个Person类,其中包含了name和age这两个字段,想要将其序列化就可以这样写。

public class Person implements Serializable

{

  private String name;

  private int age;

  setters getters;            //set和get方法

}

FirstActivity:

Person person=new Person();

person.setName("Tom");

person.setAge(20);

Intent intent=new Intent(FirstActivity.this,SecondActivity.class);

intent.putExtra("person_data",person);

startActivity(intent);

SecondActivity:

Person person=(Person)getIntent().getSerializableExtra("person_data"); 



Intent传递对象