Android学习篇章25-Intentc传输数据Bundle-Parcelable-Serializable

来源:互联网 发布:mac linux双系统 编辑:程序博客网 时间:2024/05/22 07:02

MainActivity:

public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}public void clickBtn(View view){Intent intent=new Intent(this,SecondActivity.class);//putExtra方法支持8种基本数据类型  String类型  以及对应的数组类型//    intent.putExtra("name", "Tom");//    intent.putExtra("age", 18);//    intent.putExtra("score", 98.5);//Bundle是Intent用来保存数据的数据集//Bundle  data=new Bundle();//data.putString("name", "tom");//data.putInt("age", 19);//intent.putExtras(data);//-----------------------传送对象类型-------------------    //如果要实现普通的实体类对象的传递  这个对象要实现序列化或者Parcelable接口//Parcelable接口是Android中推荐的序列化方式,与Serializable//的差别在于 能够更好的实现跨进程访问Student stu=new Student();stu.setName("jack");stu.setAge(20);stu.setScore(89.5);Teacher  t=new Teacher();t.setTeaName("wayne");t.setTeaAge(30);t.setCourse("Java");intent.putExtra("stu", stu);intent.putExtra("teacher", t);startActivity(intent);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}

SecondActivity:

public class SecondActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_second);Intent intent=this.getIntent();//Bundle data=intent.getExtras();//int age=data.getInt("age");//String name=intent.getStringExtra("name");//int age=intent.getIntExtra("age", 0);//double score=intent.getDoubleExtra("score", 0);//Toast.makeText(this, "姓名:"+name+" age:"+age+" 分数:"+score, Toast.LENGTH_LONG).show();    //获取实体类对象Student stu=(Student)intent.getSerializableExtra("stu");Teacher t=intent.getParcelableExtra("teacher");   Toast.makeText(this, stu.toString()+" "+t.toString(), Toast.LENGTH_LONG).show();}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.second, menu);return true;}}

Serializable:

public class Student  implements Serializable{/** *  */private static final long serialVersionUID = -4554710332752861155L;private String name;private Integer age;private Double  score;public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public Double getScore() {return score;}public void setScore(Double score) {this.score = score;}public String toString(){return  "姓名:"+name+" 年龄:"+age+" 分数:"+score;}}

Parcelable:

public class Teacher  implements Parcelable{private String  teaName;private int  teaAge;private String  course;public String getTeaName() {return teaName;}public void setTeaName(String teaName) {this.teaName = teaName;}public int getTeaAge() {return teaAge;}public void setTeaAge(int teaAge) {this.teaAge = teaAge;}public String getCourse() {return course;}public void setCourse(String course) {this.course = course;}public String toString(){return "姓名:"+teaName+" 年龄:"+teaAge+" 课程:"+course;}@Overridepublic int describeContents() {return 0;}   //将实体类对象写入Parcel@Overridepublic void writeToParcel(Parcel dest, int flags) {// TODO Auto-generated method stubdest.writeString(teaName);dest.writeInt(teaAge);dest.writeString(course);}public static final  Creator<Teacher>  CREATOR=new Creator<Teacher>() {//创建Teacher的对象数据组@Overridepublic Teacher[] newArray(int size) {// TODO Auto-generated method stubreturn new Teacher[size];}@Overridepublic Teacher createFromParcel(Parcel source) {// TODO Auto-generated method stubTeacher t=new Teacher();//按写入的顺序读取原先保存的值t.setTeaName(source.readString());//读取名字t.setTeaAge(source.readInt());//读取年龄t.setCourse(source.readString());//读取课程return t;}};}