Parcelable实现数据组件的数据传递

FirstActivity.java

package com.sdutacm.getcontextskillpractise;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class FirstActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Person person = new Person();
        person.setAge(18);
        person.setName("Tom");
        Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
        intent.putExtra("person_data",person);
        startActivity(intent);
    }
}

SecondActivity.java

package com.sdutacm.getcontextskillpractise;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;

/**
 * Created by bummer on 2017/8/9.
 */

public class SecondActivity extends AppCompatActivity{
   public static String TAG = "SecondActivity";
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Person person = (Person) getIntent().getParcelableExtra("person_data");
        Log.d(TAG,"person name is "+person.getName());
        Log.d(TAG,"person age is "+person.getAge());

    }
}

Person.java

package com.sdutacm.getcontextskillpractise;

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

/**
 * Created by bummer on 2017/8/9.
 */

public class Person implements Parcelable {
   private String name;
    private int age;

    public static Creator<Person> getCREATOR() {
        return CREATOR;
    }

    protected Person(Parcel in) {
        name = in.readString();
        age = in.readInt();
    }

    public static final Parcelable.Creator<Person> CREATOR = new Creator<Person>() {
        @Override
        public Person createFromParcel(Parcel in) {
            Person person = new Person();
            person.name = in.readString(); //读取name
            person.age = in.readInt(); //读取年龄
            return person;
        }

        @Override
        public Person[] newArray(int size) {
            return new Person[size];
        }
    };

    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 Person() {
    }

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

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(name);  //写出name
        dest.writeInt(age);   //写出age
    }
}
原文地址:https://www.cnblogs.com/CCCrunner/p/11781851.html