您的位置:首页 > 移动开发 > Android开发

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

2013-11-02 00:38 357 查看
MainActivity:

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;
}
};
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐