在這裏介紹4種:
1.簡單傳值
直接利用putExtra()
在ActivityA:
Intent intent = new Intent(Main8Activity.this,MainActivityB.class);
String s = et_text.getText().toString();
intent.putExtra("string",s);
intent.putExtra("age",22);
startActivity(intent);
在ActivityB:
Intent intent = getIntent();
String s = intent.getStringExtra("string");
int age = intent.getIntExtra("age",0);
2.利用Bundle
在ActivityA:
Intent intent = new Intent(Main8Activity.this,MainActivityB.class);
//數據封裝,第一種利用Bundle
Bundle bundle = new Bundle();
String s = et_text.getText().toString();
bundle.putString("string",s);
//把Bundle存入Intent
intent.putExtra("data",bundle);
startActivity(intent);
在ActivityB:
Intent intent = getIntent();
//把Bundle裏的數據取出,第一種
Bundle bundle = intent.getBundleExtra("data");
String s = bundle.getString("string");
3.傳遞對象,利用Serializable
先建一個類Cat
package com.example.john.test1;
import java.io.Serializable;
public class Cat implements Serializable{
String name;
int age;
String kind;
@Override
public String toString() {
return "Cat{" +
"name='" + name + '\'' +
", age=" + age +
", kind='" + kind + '\'' +
'}';
}
}
在ActivityA:
Cat cat = new Cat();
cat.name = "name";
cat.age = 22;
cat.kind = "kind";
Intent intent1 = new Intent(this,MainActivityB.class);
intent1.putExtra("cat",cat);
startActivity(intent1);
在ActivityB:
//獲取對象裏的信息
Cat cat = (Cat)intent.getSerializableExtra("cat");
textView.setText(cat.toString());
4.傳遞對象,利用Parcelable,這個比序列化的性能更高,雖然代碼複雜一點
先建一個類Dog
package com.example.john.test1;
import android.os.Parcel;
import android.os.Parcelable;
/**
* Created by john on 2017/4/10.
*/
public class Dog implements Parcelable{
String name;
int age;
String kind;
@Override
public String toString() {
return "Dog{" +
"name='" + name + '\'' +
", age=" + age +
", kind='" + kind + '\'' +
'}';
}
//描述內容
@Override
public int describeContents() {
return 0;
}
//把要傳遞的內容寫到包裹中去
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeInt(age);
dest.writeString(kind);
}
//對象的創建器
public static final Parcelable.Creator<Dog> CREATOR
= new Parcelable.Creator<Dog>(){
@Override
public Dog createFromParcel(Parcel in) {
Dog dog = new Dog();
dog.name = in.readString();
dog.age = in.readInt();
dog.kind = in.readString();
return dog;
}
@Override
public Dog[] newArray(int size) {
return new Dog[size];
}
};
}
在ActivityA:
Dog dog = new Dog();
dog.name = "dog";
dog.age = 12;
dog.kind = "狗";
Intent intent2 = new Intent(this, MainActivityB.class);
intent2.putExtra("dog",dog);
startActivity(intent2);
在ActivityB:
Dog dog = (Dog)intent.getParcelableExtra("dog");
textView.setText(dog.toString());