Intent 也可以传递对象的,例子如下:
?
MyParcelable.java 文件:
package com.ldq.parcelable;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;public class MyParcelable extends Activity { private Button button; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); button = (Button) findViewById(R.id.button1); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Student student = new Student(); student._id = 1001; student.name = "zhang"; student.sex = 1; student.age = 10; Intent intent = new Intent(MyParcelable.this, AnotherActivity.class); intent.putExtra("student", student); startActivity(intent); } }); }}
?
Student.java 文件:
package com.ldq.parcelable;import android.os.Parcel;import android.os.Parcelable;public class Student implements Parcelable { public int _id; public String name; public int sex; public int age; Student(Parcel p) { _id = p.readInt(); name = p.readString(); sex = p.readInt(); age = p.readInt(); } Student() { }; public static final Parcelable.Creator<Student> CREATOR = new Parcelable.Creator<Student>() { public Student createFromParcel(Parcel p) { return new Student(p); } public Student[] newArray(int size) { return new Student[size]; } }; public int describeContents() { return 0; } public void writeToParcel(Parcel p, int flags) { p.writeInt(_id); p.writeString(name); p.writeInt(sex); p.writeInt(age); }}
?
AnotherActivity.java 文件:
package com.ldq.parcelable;import android.app.Activity;import android.os.Bundle;import android.widget.TextView;public class AnotherActivity extends Activity { private TextView textView; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main1); Student s = getIntent().getParcelableExtra("student"); textView = (TextView) findViewById(R.id.textView1); textView.setText("name:" + s.name + ",age:" + s.age); }}
?
AndroidManifest.xml 文件:
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.ldq.parcelable" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="8" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".MyParcelable" 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=".AnotherActivity"> </activity> </application></manifest>
?
main.xml 文件:
<?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"> <Button android:text="Button" android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button></LinearLayout>
?main1.xml 文件:
<?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:text="TextView" android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView></LinearLayout>?