Android学习篇章25-Intentc传输数据Bundle-Parcelable-Serializable
2013-11-02 00:38
357 查看
MainActivity:
SecondActivity:
Serializable:
Parcelable:
public class MainActivity extends Activity { @Override protected 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); } @Override public 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 { @Override protected 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(); } @Override public 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; } @Override public int describeContents() { return 0; } //将实体类对象写入Parcel @Override public void writeToParcel(Parcel dest, int flags) { // TODO Auto-generated method stub dest.writeString(teaName); dest.writeInt(teaAge); dest.writeString(course); } public static final Creator<Teacher> CREATOR=new Creator<Teacher>() { //创建Teacher的对象数据组 @Override public Teacher[] newArray(int size) { // TODO Auto-generated method stub return new Teacher[size]; } @Override public Teacher createFromParcel(Parcel source) { // TODO Auto-generated method stub Teacher t=new Teacher(); //按写入的顺序读取原先保存的值 t.setTeaName(source.readString());//读取名字 t.setTeaAge(source.readInt());//读取年龄 t.setCourse(source.readString());//读取课程 return t; } }; }
相关文章推荐
- (4.1.30.1)Android中Intent传递对象的两种方法(Bundle.putParcelable/putSerializable)!
- android 数据传递详解(Serialization、Parcelable、Parcel、Intent、Bundle)
- android数据传输之Bundle和Parcelable
- android 数据传递详解(Serialization、Parcelable、Parcel、Intent、Bundle)
- Android学习札记13:为什么更推荐使用Parcelable来在Activity间传递数据,而不是Serializable?
- 读书笔记——Intent数据传输(Parcelable和Serializable)
- android 数据传递详解(Serialization、Parcelable、Parcel、Intent、Bundle)
- Android中Intent传递对象的两种方法(Bundle.putParcelable/putSerializable)!
- android 数据传递详解(Serialization、Parcelable、Parcel、Intent、Bundle)
- android 数据传递详解(Serialization、Parcelable、Parcel、Intent、Bundle)
- Android学习第二天:Intent传输数据、常用控件和Activity生命周期
- 安卓学习之--android 数据传递详解(Serialization、Parcelable、Parcel、Intent、Bundle)
- Android中Intent传递对象的两种方法(Bundle.putParcelable/putSerializable)!
- android 数据传递详解(Serialization、Parcelable、Parcel、Intent、Bundle)
- android 数据传递详解(Serialization、Parcelable、Parcel、Intent、Bundle)
- Android中Intent/Bundle的通信原理及大小限制(Parcelable原理及与Serializable的区别)
- android 数据传递详解(Serialization、Parcelable、Parcel、Intent、Bundle)
- (4.1.30)android 数据传递详解(Serialization、Parcelable、Parcel、Intent、Bundle)
- Android中Intent传递对象的两种方法(Serializable,Parcelable)
- Android中Intent传递对象的两种方法:Serializable & Parcelable