1.布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Data viewer view" android:textSize="10pt" android:textColor="#00FF00" android:gravity="center_horizontal" android:padding="20sp" /> <EditText android:id="@+id/TXT_DATA" android:layout_width="fill_parent" android:layout_height="fill_parent" android:textSize="6pt" android:editable ="false" android:scrollbars="vertical" android:layout_gravity="top" /> </LinearLayout> <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Main view" android:textSize="10pt" android:textColor="#00FF00" android:gravity="center_horizontal" android:padding="20sp" /> <Button android:id="@+id/BTN_START" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Start another activity" android:layout_gravity="center_horizontal" /> </LinearLayout> 2.代码 package foolstudio.demo; import java.util.ArrayList; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class IntentDataTestAct extends Activity implements OnClickListener { public static final int REQ_CODE = 2012; public static final String EXTRAS_KEY = "EXTRAS_DATA"; private ArrayList<Kid> mKids = new ArrayList<Kid>(); /*Andoid平台禁止访问Activity的构造函数,否则抛出异常 public static IntentDataTestAct mInstance = new IntentDataTestAct(); private IntentDataTestAct() { } public static IntentDataTestAct getInstance() { return (mInstance); } */ /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_view); Button btnStart = (Button)findViewById(R.id.BTN_START); btnStart.setOnClickListener(this); } @Override public void onClick(View v) { // TODO Auto-generated method stub switch(v.getId() ) { case R.id.BTN_START: { doStart(); break; } } } //启动新的活动 private void doStart() { Intent startNew = new Intent(this, DataViewerAct.class); ArrayList<Kid> kids = initArrayList(); startNew.putParcelableArrayListExtra(EXTRAS_KEY, kids); //this.startActivity(startNew); this.startActivityForResult(startNew, REQ_CODE); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub if(requestCode == REQ_CODE) { Bundle bundle = data.getExtras(); String msg = bundle.getString("Msg"); Toast.makeText(this, msg, Toast.LENGTH_LONG).show(); } super.onActivityResult(requestCode, resultCode, data); } //初始化列表 private ArrayList<Kid> initArrayList() { //ArrayList<Kid> kids = new ArrayList<Kid>(); addKid(mKids, "Jim", Kid.SEX_FEMALE, "2007-5-31"); addKid(mKids, "Jane", Kid.SEX_MALE, "2007-10-31"); addKid(mKids, "Bob", Kid.SEX_FEMALE, "2007-6-1"); return mKids; } //获取列表 public ArrayList<Kid> getArrayList() { return (mKids); } //添加小孩记录 private void addKid(ArrayList<Kid> kids, String name, int sex_flag, String birthday) { Kid kid = new Kid(name, sex_flag, birthday); kids.add(kid); } }; 3.意向对象的附加容器 package foolstudio.demo; import android.os.Parcel; import android.os.Parcelable; public class Kid implements Parcelable { public static final int SEX_FEMALE = 1; public static final int SEX_MALE = 0; private String name = null; private int sex = 1; private String birthday = null; //必须要有一个名为CREATOR的成员对象,否则无法进行Parcelable对象通信 public static final Parcelable.Creator<Kid> CREATOR = new Parcelable.Creator<Kid>() { public Kid createFromParcel(Parcel in) { return new Kid(in); } public Kid[] newArray(int size) { return new Kid[size]; } }; public Kid(String _name, int _sex, String _birthday) { this.birthday = _birthday; this.sex = _sex; this.name = _name; } public void setName(String name) { this.name = name; } public String getName() { return name; } public void setBirthday(String birthday) { this.birthday = birthday; } public String getBirthday() { return birthday; } public void setSex(int sex) { this.sex = sex; } public int getSex() { return sex; } public String toString() { StringBuffer sb = new StringBuffer(); sb.append("Name: "); sb.append(this.name + "/n"); sb.append("Sex: "); sb.append( ((this.sex == 1) ? "Female" : "Male") + "/n"); sb.append("Birthday: "); sb.append(this.birthday ); return (sb.toString() ); } //实现Parcelable接口 public Kid(Parcel in) { this.name = in.readString(); this.sex = in.readInt(); this.birthday = in.readString(); } @Override public int describeContents() { // TODO Auto-generated method stub return 0; } @Override public void writeToParcel(Parcel dest, int flags) { // TODO Auto-generated method stub dest.writeString(this.name); dest.writeInt(this.sex); dest.writeString(this.birthday); } }; 4.被调用方Activity接收传递数据 package foolstudio.demo; import java.util.ArrayList; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.widget.EditText; public class DataViewerAct extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.data_viewer_view); EditText txtData = (EditText)findViewById(R.id.TXT_DATA); //获取父Activity所传递的附加数据 Intent intent = this.getIntent(); ArrayList<Kid> kids = intent.getParcelableArrayListExtra(IntentDataTestAct.EXTRAS_KEY); //ArrayList<Kid> kids = IntentDataTestAct.getInstance().getArrayList(); for(int i = 0; i < kids.size(); ++i) { Kid kid = kids.get(i); txtData.append("#" + i + " ========/n"); txtData.append(kid.toString() ); txtData.append("/n"); } //返回结果 Intent result = new Intent(); result.putExtra("Msg", "Get " + kids.size() + " record(s)."); this.setResult(IntentDataTestAct.REQ_CODE, result); } }; 5.注册清单 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="foolstudio.demo" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".IntentDataTestAct" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".DataViewerAct"></activity> </application> <uses-sdk android:minSdkVersion="3" /> </manifest>