Intentを介してBeanを渡す方法
4555 ワード
1.方法1
(1)BeanSerializable
(2)Sender
(3)Receiver
2.方法2
(1)BeanParcelable
(2)Sender
(3)Receiver
3.注意事項
Beanの中には、上記の2つの方法では伝達できないものもあります.例えばDrawble[]photos;パラメータのBeanは、androidのIO設計ではwrite Drawableができないため、writeString、writeInteger、writeFileなどしかできません.したがって、Drawable[]パラメータを直接渡すのではなく、Drawable[]を生成するデータを転送し、宛先に転送してこれらのデータを再利用してDrawable[]を生成します.飛行機を輸送するようですが、飛行機全体を輸送することはできません.まず、飛行機の各部品を目的地(これは輸送可能です)に輸送し、目的地でこれらの部品を飛行機に組み立てるしかありません.
(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 CREATOR = new Creator() {
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の中には、上記の2つの方法では伝達できないものもあります.例えばDrawble[]photos;パラメータのBeanは、androidのIO設計ではwrite Drawableができないため、writeString、writeInteger、writeFileなどしかできません.したがって、Drawable[]パラメータを直接渡すのではなく、Drawable[]を生成するデータを転送し、宛先に転送してこれらのデータを再利用してDrawable[]を生成します.飛行機を輸送するようですが、飛行機全体を輸送することはできません.まず、飛行機の各部品を目的地(これは輸送可能です)に輸送し、目的地でこれらの部品を飛行機に組み立てるしかありません.