使用Intent传递对象

Android 2017-12-04

使用Intent来传递对象通常有两种实现方式:Serializable和Parcelable,本小节中我们先来学习一下第一种实现方式。Serializable是序列化的意思,表示将一个对象转换成可存储或可传输的状态。序列化后的对象可以在网络上进行传输,也可以存储到本地。至于序列化的方法也很简单,只需要让一个类去实现Serializable这个接口就可以了。
比如说有一个Person类,其中包含了name和age这两个字段,想要将它序列化就可以这样写:

public class Person implements Serializable {
        private String name;
        private int age;
        public String getName() {
            return name;
        } public void setName(String name) {
            this.name = name;
        } public int getAge() {
            return age;
        } public void setAge(int age) {
            this.age = age;
        }
    }

其中,get、set方法都是用于赋值和读取字段数据的,最重要的部分是在第一行。这里让Person类去实现了Serializable接口,这样所有的Person对象就都是可序列化的了。
接下来在FirstActivity中的写法非常简单:

Personperson=newPerson();
person.setName("Tom");
person.setAge(20);
Intentintent=newIntent(FirstActivity.this,SecondActivity.class);
intent.putExtra("person_data",person);
startActivity(intent)

可以看到,这里我们创建了一个Person的实例,然后就直接将它传入到putExtra()方法中了。由于Person类实现了Serializable接口,所以才可以这样写。接下来在SecondActivity中获取这个对象也很简单,写法如下:

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

这里调用了getSerializableExtra()方法来获取通过参数传递过来的序列化对象,接着再将它向下转型成Person对象,这样我们就成功实现了使用Intent来传递对象的功能了。

还有一种是用Parcelable方式实现的,实现起来比Serializable复杂些,但是Serializable的方式较为简单, 但由于会把整个对象进行序列化,因此效率会比Parcelable方式低一些, 所以在通常情况下还是更加推荐使用Parcelable的方式来实现Intent传递对象的功能。


本文由 方方無 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

还不快抢沙发

添加新评论

shijiebei 365bet manbetx 188bet xinshui caipiao 95zz tongbaoyule beplay 88bifa 18luck betway bwin hg0088 aomenjinshayulecheng ca88 shenbotaiyangcheng vwin w88 weide