在Activity之间传递数据—传递值对象

传递有两种方式,一种是类继承自Serializable(Java方式,速度较慢),另一种是类继承自Parcelable(Android方式)
继承自Serializable的时候,实现比较简单,类只需书写必须的属性和构造函数。继承自Parcelable的时候,需要实现往目标中写数据等。
两种差别在实体类的书写和接收时。
1.      类继承自Serializable
MainActivity中的OnCreate方法添加代码:
findViewById(R.id.btnStart).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Intent i=new Intent(MainActivity.this,OthereActivity.class);
        User user=new User("杨戬",90);
        i.putExtra("user", user);
        startActivity(i);
    }
});
OtherActivity中的Oncreate方法添加代码:
   Intent i=getIntent();
        tv=(TextView)findViewById(R.id.txtView);

        User u= (User) i.getSerializableExtra("user");
        //    User u= (User) i.getParcelableExtra("user");  接收时的区别
        tv.setText(String.format("姓名1:%s;年龄1:%d",u.getName(),u.getAge()));
2.      类继承自Parcelable
  User类完整代码:
package com.example.jike.hhh;

import android.os.Parcel;
import android.os.Parcelable;

import java.io.Serializable;

/**
 * Created by Administrator on 15-6-14.
 */
//public class User implements Serializable {
public class User implements Parcelable {
    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;
    }

    public User(String name, int age)
    {
        this.name=name;
        this.age=age;
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel parcel, int i) {
            //向目标中写数据
        parcel.writeString(getName());
        parcel.writeInt(getAge());
    }

    public static final Creator<User> CREATOR=new Creator<User>() {
        @Override
        public User createFromParcel(Parcel parcel) {
            return new User(parcel.readString(),parcel.readInt());
        }

        @Override
        public User[] newArray(int i) {
            return new User[i];//返回i
        }
    };
}
View Code
原文地址:https://www.cnblogs.com/hometown/p/4575326.html