(一):從activity A 傳遞單個參數到acticity B。
activity 1:
Intenrt i=new Intent(activity A.this,activity B.class);
i.putExtra("名字","參數值");
startActivity(i);
activity B:
Intent i=getIntent();
String str=i.getStringExtra("名字");//注意:兩個activity的參數名字要一樣
(二):從activity A傳遞數據包到activity B,也就是同時傳多個參數
activity A:
Intenrt i=new Intent(activity A.this,activity B.class);
Bundle b = new Bundle();
b.putString("名字1","參數值");
b.putInt("名字2","參數值");
i.putExtra(b);
startActivity(i);
activity B:
Intent i=getIntent();
Bundle data = i.getExtra();
tv.setText(String.format("%s,%d"),data.getString("名字1"),data.getInt("名字2"));
//(tv是一個textview控件,用來顯示activity傳過來的數據)
PS:補充(二):另一種在activity之間傳遞數據包的方法
Intenrt i=new Intent(activity A.this,activity B.class);
Bundle b = new Bundle();
b.putString("名字1","參數值");
b.putInt("名字2","參數值");
i.putExtra("數據包的名字",b);
startActivity(i);
activity B:
Intent i=getIntent();
Bundle data = i.getBundleExtra("數據包的名字");
(三)activity之間傳遞值對象(即自定義的有數據類型的對象)
//比如我們要傳遞這樣一個自定義的對象:
public class User implements Parcelable{ //實現的這個是Android平臺提供的序列化的接口
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public User(String name,int age){
this.name = name;
this.age = age;
}
@Override
public int describeContents(){
}
@Override
public void writeToParcel(Parcel dest,int flags){
dest.writeString(getName()); //手動的添加這兩個方法,把參數給保存起來,方便傳遞給其他的activity
dest.writeInt(getAge());
}
//此外,還需要手動創建一個Creator
public static final Creator<User> CREATOR = new Creator<user>{
@Override
public user createFromParcel(Parcel source){
//如果有多個相同數據類型的話可以傳Bundle
return new user(source.readString(), source.readInt());
}
@Override
public User[] newArray(int size){
return new user[size];
}
}
}
activity A:
Intenrt i=new Intent(activity A.this,activity B.class);
i.putExtra("名字",new user("i love Android",20));//實例化user類,同時把兩個參數傳進去
startActivity(i);
activity B:
Intent i=getIntent();
User user = i.getParcelableExtra("user");
tv.setText(String.format("%s,%d"),user.getName(),user.getAge());
通過以上方法就可以實現把自定義的數據對象user從activity A傳到activity B。這種傳參方式雖然比較複雜但是優點是運行速率快。