1.在Activity间传递简单参数
Intent i = new Intent(…….this,…….class);
2.传递数据包 Bundle
Bundle b = new Bundle();
b.putString(“name”,”l loue you”);
b.putInt(“age”,2);
i.putExtras(b); //可嵌入
//i.putExtra(“data”,b);
//可支持的数据类型很多
//i.putExtra(“data2”,”hello android”);
3.获取Intent
Intent i = getIntent(); //在另一个activity中获取Intent
Bundle data = i.getExtras();
//Bundle data = i.getBundleExtra(“data”);
tv.setText(String.format(“name=%s,age=%d,name1=%1”,data.getString(“name”),data.getInt(“age”),data.getString(“name1”,”leo”)));
4.传递值对象
(1) Serializable 自动序列化机制 简单但是慢
自定义类型
public class User implrments Serializable{
};
在另一个activity中获取第一个activity传递的参数(值对象)
Intent i = getIntent();
User user = (User) i.getSerializableExtra(“user”);
tv.setText(String.format(“User info(name = %s,age = %d)”,user.getName(),user,getAge());
(2)Parcelable 需要手动写Android平台提供的,速度快
继承Parcelable
public void writeToParcel(Parcel dest, int flags){
dest.writeString(getName());
dest.writeInt(getAge());
}
此外还要定义CREATOR
public static final Creator CREATOR = new Creator(){
public User createFromParcel(Parcel source){
return new User(source.readString(),source.readInt())};
public User[] newArray(int size){
return new User[size];}
};
5.获取activity的返回参数
第一个activity:
在onClick()方法中调用setResult()方法
public void onClick(View i){
Intent i = new Intent();
i.putExtra(“data”,editText.gettext().toString);
setResult(1,i);
finish();//结束当前activity
}
另一个activity:
在接受activity中需使用startActivityForResult(i,0);
需要重写onActivityResult()方法
protected void onActivityResult(int ResultCode,int ResultCode,Intent data){
super.omActivityResult(ResultCode,ResultCode,data);
textView.setText(“另一个activity返回的参数是”+data.getStringExtra(“data”));
}