Activity间传递参数的四种常用方法

来源:互联网 发布:2016京东618销售数据 编辑:程序博客网 时间:2024/05/16 06:50
第一种:Intent方式传递简单数据
AActivity:
Intent i = new Intent(AActivity.this.BActivity.class);
i.putExtra("data","Hello world!");
startActivity(i);


BActivity:
Intent i = getIntent();
String data = i.getStringExtra("data");


第二种:Bundle数据包方式
AActivity:
Intent i = new Intent(AActivity.this.BActivity.class);
Bundle b = new Bundle();
b.putString("name","zhangsan");
b.putInt("age",20);
i.putExtras(b); //或i.putExtra("data",b)
startActivity(i);


BActivity:
Intent i = getIntent();
Bundle data = i.getExtras(); //Bundle data = i.getBundleExtra("data");
String name = data.getStringExtra("name");
Int age = data.getInt("age");


第三种:Serializable传递自定义对象(java自带)


public class User implements Serializable 
    private String name;
    private int age;


    public User(String name,int age){
        this.age = age;
        this.name = name;
    }
}


AActivity:
Intent i = new Intent(AActivity.this.BActivity.class);
i.putExtra("data",new User("zhangsan",20));
startActivity(i);


BActivity:
Intent i = getIntent();
User user = (User) i.getSerializableExtra("data");


第四种:Parcelable传递自定义对象(Android提供)
相比第三种要复杂点,但是速度快


public class User implements Parcelable{
    private String name;
    private int age;


    protected User(Parcel in) {
        name = in.readString();
        age = in.readInt();
    }


    public int getAge() {
        return age;
    }


    public void setAge(int age) {
        this.age = age;
    }


    public String getName() {
        return name;
    }


    public void setName(String name) {
        this.name = name;
    }


    public User(String name,int age){
        this.age = age;
        this.name = name;
    }


    @Override
    public int describeContents() {
        //这个方法不用管
        return 0;
    }


    @Override
    public void writeToParcel(Parcel parcel, int i) {
        parcel.writeString(getName());
        parcel.writeInt(getAge());


    }


    public static final Creator<User> CREATOR = new Creator<User>() {
        @Override
        public User createFromParcel(Parcel in) {
            return new User(in.readString(),in.readInt());
        }


        @Override
        public User[] newArray(int size) {
            return new User[size];
        }
    };
}




AActivity:
Intent i = new Intent(AActivity.this.BActivity.class);
i.putExtra("data",new User("zhangsan",20));
startActivity(i);


BActivity:
Intent i = getIntent();

User user = (User) i.getParcelableExtra("data");



0 0
原创粉丝点击