AndroidでIntentを使用してオブジェクトを渡す方法


アクティビティの開始、ブロードキャストの送信、サービスの開始など、Intentを利用することができます.上記の操作を行うと、Intentに追加データを追加することができます.例えば、次のコード:MainActivity
  Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("name", "xiaoming");
intent.putExtra("age", 17);
startActivity(intent);

SecondActivity :

  getIntent().getStringExtra("name");
getIntent().getIntExtra("age", 0);

Intent , ?

, Serializable , Parcelable 。

Serializable , 。 , 。 , Serializable 。
Animal , type,sex , :

  public class Animal implements Serializable
{
    private String type;
    private String sex;
    public String getType()
    {
        return type;
    }
    public void setType(String type)
    {
        this.type = type;
    }
    public Stirng getSex()
    {
        return sex;
    }
    public void setSex(String sex)
    {
        this.sex = sex;
    }
}

MainActivty.java

  Animal animal = new Animal();
animal.setType("panda");
animal.setSex("male");
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent,putExtra("animal_panda", animal);
startActivity(intent);

SecondActivity.java

  Animal animal = (Animal)getIntent().getSerializableExtra(animal_panda);

getSerializableExtra() , Person , Intent 。

Serializable , Parcelable , ,Parcelable , Intent , 。

  public class Animal implements Serializable
{
    private String type;
    private String sex;
    public String getType()
    {
        return type;
    }
    public void setType(String type)
    {
        this.type = type;
    }
    public Stirng getSex()
    {
        return sex;
    }
    public void setSex(String sex)
    {
        this.sex = sex;
    }
    @Override
    public int describeContents()
    {
        return 0;
    }
    @Override
    public void writeToParcel(Parcel dest, int flags)
    {
        dest.writeString(type);
        dest.writeString(sex);
    }
    public static final Parcelable.Creator<Animal> CREATOR = new Parcelable.Creator<Animal>()
    {
        @Override
        public Animal createFromParcel(Parcel source)
        {
            Animal animal = new Animal();
            animal.type = source.readStirng();
            animal.sex = source.readString();
            return animal;
        }
        @Override 
        public Aniaml[] newArray(int size)
        {
            return new Animal[size];
        }
    }
}

SecondActivity.java

  Animal animal = (Animal)getIntent.getParcelableExtra(animal-panda);

,Parcelable , , Parcelable Intent 。

:CodeEmperor 2015/8/13 11:46:12
:228 :0