1. 方法1
(1)BeanSerializable
public class BeanSerializable implements Serializable {
private static final long serialVersionUID = 1L;
private String name;
private int age;
private String address;
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 String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
(2)Sender
public class Sender extends Activity {
private Button btn;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sender);
btn = (Button) findViewById(R.id.sender_btn);
btn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
BeanSerializable bean = new BeanSerializable();
bean.setAddress("大学路195号");
bean.setAge(25);
bean.setName("Forrest");
Intent intent = new Intent(Sender.this, Receiver.class);
intent.putExtra("PERSON_INFO", bean);
startActivity(intent);
}
});
}
}
(3)Receiver
public class Receiver extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.receiver);
Intent intent = getIntent();
BeanSerializable bean = (BeanSerializable) intent.getSerializableExtra("PERSON_INFO");
TextView tv = (TextView) findViewById(R.id.receiver_tv);
tv.setText(bean.getName() + " / " + bean.getAddress() + " / " + String.valueOf(bean.getAge()));
}
}
2. 方法2
(1)BeanParcelable
public class BeanParcelable implements Parcelable {
private String name;
private int age;
private String address;
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 String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeInt(age);
dest.writeString(address);
}
public static final Parcelable.Creator<BeanParcelable> CREATOR = new Creator<BeanParcelable>() {
public BeanParcelable createFromParcel(Parcel source) {
BeanParcelable bean = new BeanParcelable();
bean.name = source.readString();
bean.age = source.readInt();
bean.address = source.readString();
return bean;
}
public BeanParcelable[] newArray(int size) {
return new BeanParcelable[size];
}
};
}
(2)Sender
public class Sender extends Activity {
private Button btn;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sender);
btn = (Button) findViewById(R.id.sender_btn);
btn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
BeanParcelable beanParcelable = new BeanParcelable();
beanParcelable.setAddress("政立路545弄6号楼402");
beanParcelable.setAge(25);
beanParcelable.setName("Forrest");
Intent intent = new Intent(Sender.this, Receiver.class);
intent.putExtra("PERSON_INFO", beanParcelable);
startActivity(intent);
}
});
}
}
(3)Receiver
public class Receiver extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.receiver);
Intent intent = getIntent();
BeanParcelable beanParcelable = (BeanParcelable) intent.getParcelableExtra("PERSON_INFO");
TextView tv = (TextView) findViewById(R.id.receiver_tv);
tv.setText(beanParcelable.getName() + " / " + beanParcelable.getAddress() + " / " + String.valueOf(beanParcelable.getAge()));
}
}
3. 注意事项
有些Bean是无法通过上面两种方法传递的。例如以Drawble[] photos;为参数的Bean,因为android的IO设计无法write Drawable,而只能writeString, writeInteger, writeFile等。所以我们就不直接传递Drawable[]参数,改而传递生成Drawable[]的数据,传递到了目的地再利用这些数据生成Drawable[]。就好像你要运输一架飞机,但你无法整机运输(传递),你只好先将飞机的各个零部件运输到目的地(这个是可以运输传递的),然后在目的地再将这些零部件组装成飞机。