1.使用Intent的的putExtra()方法传递数据
MainActivity
Intent intent = new Intent(this, MainActivity2.class);
intent.putExtra("name","tom");
intent.putExtra("age",10);
startActivity(intent);
SecondActivity
public class MainActivity2 extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
Intent intent = getIntent();
String name = intent.getStringExtra("name");
int age = intent.getIntExtra("age",20);
Toast.makeText(this,"name:"+ name+ "age:"+age,Toast.LENGTH_LONG).show();
}
}
2.使用Bundle类传递数据
MainActivity
Intent intent = new Intent(this,MainActivity4.class);
Bundle bundle = new Bundle();
bundle.putString("name","jerry");
bundle.putInt("age",20);
intent.putExtras(bundle);
startActivity(intent);
SecondActivity
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main4);
Intent intent = getIntent();
//自动拆开bundle对象
String name = intent.getStringExtra("name");
int age = intent.getIntExtra("age",36);
Toast.makeText(this,"name:"+name+"age:"+age,Toast.LENGTH_LONG).show();
}
3.使用Serializable接口传递对象
实现Serializable接口
public class Student implements Serializable {
public String name;
public int age;
}
MainActivity
Intent intent =new Intent(this,MainActivity6.class);
Student s = new Student();
s.name = "jack";
s.age = 7;
intent.putExtra("student",s);
startActivity(intent);
SecondActivity
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main6);
Intent intent = getIntent();
Student student = (Student) intent.getSerializableExtra("student");
Toast.makeText(this,"name:"+student.name
+"age:"+student.age,Toast.LENGTH_LONG).show();
}
4.使用Parcelable接口传递对象
实现Parcelable接口
public class Teacher implements Parcelable {
public Teacher() {
}
//自己定义的成员
public String name;
public int age;
public String sex;
//从Parcel里读取成员 赋值 读入顺序和写入顺序必须一致
protected Teacher(Parcel in) {
name = in.readString();
age = in.readInt();
sex = in.readString();
}
//属性写入Parcel对象里
@Override
public void writeToParcel(Parcel parcel, int i) {
parcel.writeString(name);
parcel.writeInt(age);
parcel.writeString(sex);
}
public static final Creator<Teacher> CREATOR = new Creator<Teacher>() {
@Override
//从Parcel中构建一个Teacher对象返回(成员数据可以从Parcel对象获取)
public Teacher createFromParcel(Parcel in) {
return new Teacher(in);
}
@Override
public Teacher[] newArray(int size) {
return new Teacher[size];
}
};
//不用管,系统扩展用
@Override
public int describeContents() {
return 0;
}
}
MainActivity
Intent intent = new Intent(this,MainActivity8.class);
Teacher teacher =new Teacher();
teacher.name = "nh";
teacher.age = 22;
teacher.sex = "boy";
intent.putExtra("teacher",teacher);
startActivity(intent);
SecondActivity
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main8);
Intent intent = getIntent();
Teacher teacher = intent.getParcelableExtra("teacher");
Toast.makeText(this,"name:"+
teacher.name+"age:"+teacher.age+
"sex:"+teacher.sex,Toast.LENGTH_LONG).show();
}
在Android中使用Parcelable 性能高于Serializable