Intent来启动Activity,开启服务Service,发送广播Broadcast,然后使用Intent传递基本的数据类型,如:布尔值,整型,字符串。例如:

Intent intent = new Intent(this, MainActivity.class);  
intent.putExtra("isBoy", true);  
intent.putExtra("age", 24);  
intent.putExtra("name", "jane");

而当我们想用Intent传递对象,那么这个传递的对象必须是可序列化的。Serializable就是 是序列化的意思,表示将一个对象转换成可存储或可传输的状态。序列化后的对象可以在网络上进行传输,也可以存储到本地。至于序列化的方法也很简单,只需要让一个类去实现 Serializable 这个接口就可以了。例如:

public class Person implements Serializable {  
    private String name;  
    private String password;  
    public String getName() {  
        return name;  
    }  
    public void setName(String name) {  
        this.name = name;  
    }  
    public String getPassword() {  
        return password;  
    }  
    public void setPassword(String password) {  
        this.password = password;  
    }  
    public Person() {  
        super();  
    }  
    public Person(String name, String password) {  
        super();  
        this.name = name;  
        this.password = password;  
    }  
}

上面Person 实现了Serialable接口,所以Person对象是可序列化的。这时我们就能使用Intent来传递Person对象了。

Person person = new Person("wk","123");  
Intent intent = new Intent(this, MainActivity.class);  
intent.putExtra("person_data", person);  
startActivity(intent);

在MainActivity中,我们可通过Intent的getSerializableExtra()方法获取Person对象。

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

需要注意的一点是:不仅传递的对象必须要保证可序列化,传递的对象中所有变量也要可序列化。

还拿上面的Person为例,如果Person中有一个变量a,数据类型为Student类型,而Student没有实现Serialable接口。那么Person也不能传递成功。

results matching ""

    No results matching ""