http://blog.csdn.net/sukyle/article/details/4485505

1.Activity之间传递数据

(1)利用Intent传递数据

传递数据的Activity中:

Intent intent = new Intent();
intent.putExtra("name","Jon");//在Intent中加入键值对数据。键:name,值:Jon
intent.setClass(Activity01.this,Activity02.class);
Activity01.this.startActivity(intent);

在取出数据的Activity中:

Intent intent = getIntent();//获得传过来的Intent。
String value = intent.getStringExtra("name");//根据键name取出值。

(2)利用Bundle传递数据

传递数据的Activity:

Intent intent = new Intent();
Bundle myBundle = new Bundle();
myBundle.putString("Key_Name","Tom");
intent.putExtras(myBundle);
intent.setClass(Activity01.this,Activity02.class);
Activity01.this.startActivity(intent);

取出数据的Activity:

Bundle getBundle = getIntent().getExtras();
String value = getBundle.getString("Key_Name");

(3)利用startActivityForResult传递数据

startActivityForResult可以把数据传过去,还可以把那边的数据传过来。

传递数据的Activity中:

Intent intent = new Intent();
Bundle bundle= new Bundle();
bundle.putString("data", "somedata");//把数据传过去
intent.putExtras(bundle);
intent.setClass(Activity01.this, Activity02.class);
startActivityForResult(intent, 10);//10是一个代码

重载onActivityResult方法,用来接收传过来的数据:

protected void onActivityResult(int requestCode, int resultCode,Intent intent) {
switch (resultCode) {
case RESULT_OK:
Bundle b = intent.getExtras();
String str = b.getString("Result");
setTitle("Return data:" + str);
break;
default:
break;
}
}

接收数据的Activity:

Intent intent = getIntent();
BundlegetBundle = getIntent().getExtras();
String data= getBundle.getString("data");//读取传过来的数据
et.setText(data);

EditText edittext = (EditText) findViewById(R.id.text);
Intent intent = new Intent();//实例化一个Intent用来传过去,可以在Intent里存放数据。
Bundle bundle = new Bundle();
bundle.putString("Result",edittext.getText().toString());
intent.putExtras(bundle);
Activity02.this.setResult(RESULT_OK,intent);//把Intent(数据)传过去,RESULT_OK是请求码。
finish();//结束当前的Activity。

2.http://xqjay19910131-yahoo-cn.iteye.com/blog/1280857

Activity传递一个或者多个对象

Activity之间传递对象,或者通过Bundle传递对象的两种方式。

1:Serializable方式
传递一个对象

2:Parcelable方式
传递一个对象、传递多个对象(ArrayList<Object>)


方式一:Serializable

传递类:

Java代码 publicclassCustomeClassimplementsSerializable{ /** * */ privatestaticfinallongserialVersionUID=-7060210544600464481L; privateStringname; privateStringid; privateintage; privateStringsex; publicStringgetName(){ returnname; } publicvoidsetName(Stringname){ this.name=name; } publicStringgetId(){ returnid; } publicvoidsetId(Stringid){ this.id=id; } publicintgetAge(){ returnage; } publicvoidsetAge(intage){ this.age=age; } publicStringgetSex(){ returnsex; } publicvoidsetSex(Stringsex){ this.sex=sex; } }

public class CustomeClass implements Serializable{/** * */private static final long serialVersionUID = -7060210544600464481L;private String name;private String id;private int age;private String sex;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getId() {return id;}public void setId(String id) {this.id = id;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}}




发送部分:

Java代码 CustomeClasscc=newCustomeClass(); cc.setAge(21); cc.setId("123456"); cc.setName("mingkg21"); cc.setSex("男"); Intentintent=newIntent(this,PersonInfo.class); intent.putExtra("PERSON_INFO",cc); startActivity(intent);

CustomeClass cc = new CustomeClass(); cc.setAge(21); cc.setId("123456"); cc.setName("mingkg21"); cc.setSex("男"); Intent intent = new Intent(this, PersonInfo.class); intent.putExtra("PERSON_INFO", cc); startActivity(intent);




接收部分:

Java代码 Intentintent=getIntent(); CustomeClasscc=CustomeClass)intent.getSerializableExtra("PERSON_INFO"); setTextView(R.id.id,cc.getId()); setTextView(R.id.name,cc.getName()); setTextView(R.id.sex,cc.getSex()); setTextView(R.id.age,String.valueOf(cc.getAge()));

Intent intent = getIntent();CustomeClass cc = CustomeClass)intent.getSerializableExtra("PERSON_INFO");setTextView(R.id.id, cc.getId());setTextView(R.id.name, cc.getName());setTextView(R.id.sex, cc.getSex());setTextView(R.id.age, String.valueOf(cc.getAge()));




方式二:Parcelable

传递类:

Java代码 publicclassCustomeParcelableimplementsParcelable{ privateStringname; privateStringid; privateintage; privateStringsex; publicStringgetName(){ returnname; } publicvoidsetName(Stringname){ this.name=name; } publicStringgetId(){ returnid; } publicvoidsetId(Stringid){ this.id=id; } publicintgetAge(){ returnage; } publicvoidsetAge(intage){ this.age=age; } publicStringgetSex(){ returnsex; } publicvoidsetSex(Stringsex){ this.sex=sex; } publicstaticfinalParcelable.Creator<CustomeParcelable>CREATOR=newCreator<CustomeParcelable>(){ publicCustomeParcelablecreateFromParcel(Parcelsource){ //TODOAuto-generatedmethodstub CustomeParcelablecus=newCustomeParcelable(); cus.name=source.readString(); cus.id=source.readString(); cus.age=source.readInt(); cus.sex=source.readString(); returncus; } publicCustomeParcelable[]newArray(intsize){ //TODOAuto-generatedmethodstub returnnewCustomeParcelable[size]; } }; publicintdescribeContents(){ //TODOAuto-generatedmethodstub return0; } publicvoidwriteToParcel(Parceldest,intflags){ //TODOAuto-generatedmethodstub dest.writeString(name); dest.writeString(id); dest.writeInt(age); dest.writeString(sex); } }

public class CustomeParcelable implements Parcelable {private String name;private String id;private int age;private String sex;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getId() {return id;}public void setId(String id) {this.id = id;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public static final Parcelable.Creator<CustomeParcelable> CREATOR = new Creator<CustomeParcelable>(){public CustomeParcelable createFromParcel(Parcel source) {// TODO Auto-generated method stubCustomeParcelable cus = new CustomeParcelable();cus.name = source.readString();cus.id = source.readString();cus.age = source.readInt();cus.sex = source.readString();return cus;}public CustomeParcelable[] newArray(int size) {// TODO Auto-generated method stubreturn new CustomeParcelable[size];}};public int describeContents() {// TODO Auto-generated method stubreturn 0;}public void writeToParcel(Parcel dest, int flags) {// TODO Auto-generated method stubdest.writeString(name);dest.writeString(id);dest.writeInt(age);dest.writeString(sex);}}



发送部分:

Java代码 CustomeParcelablecc=newCustomeParcelable(); cc.setAge(21); cc.setId("123456"); cc.setName("mingkg21"); cc.setSex("男"); Intentintent=newIntent(this,PersonInfo.class); intent.putExtra("PERSON_INFO",cc); startActivity(intent);

CustomeParcelable cc = new CustomeParcelable();cc.setAge(21);cc.setId("123456");cc.setName("mingkg21");cc.setSex("男"); Intent intent = new Intent(this, PersonInfo.class);intent.putExtra("PERSON_INFO", cc);startActivity(intent);



接受部分:

Java代码 Intentintent=getIntent(); CustomeParcelablecc=intent.getParcelableExtra("PERSON_INFO"); setTextView(R.id.id,cc.getId()); setTextView(R.id.name,cc.getName()); setTextView(R.id.sex,cc.getSex()); setTextView(R.id.age,String.valueOf(cc.getAge()));

Intent intent = getIntent();CustomeParcelable cc = intent.getParcelableExtra("PERSON_INFO");setTextView(R.id.id, cc.getId());setTextView(R.id.name, cc.getName());setTextView(R.id.sex, cc.getSex());setTextView(R.id.age, String.valueOf(cc.getAge()));




以上为Parcelable传递一个对象,若要实现传递多个对象,
传递部分:

Java代码 Bundlebundle=newBundle(); bundle.putParcelableArrayList("mP3TagForNetDTOs",mP3TagForNetDTOs); msg.setData(bundle); endDocNotice.sendMessage(msg);

Bundle bundle = new Bundle();bundle.putParcelableArrayList("mP3TagForNetDTOs",mP3TagForNetDTOs);msg.setData(bundle);endDocNotice.sendMessage(msg);



接受部分:

Java代码 Bundlebundle=msg.getData(); mP3TagForNetDTOs=bundle.getParcelableArrayList("mP3TagForNetDTOs");