Activity之间的参数传递

参数传递主要是从一个Activity传递到另一个Activity,这里分三部分记载

第一部分是最简单的只有一个数据的时候的数据传递

                //传递数据
                Intent t = new Intent(MainActivity.this, AnotherActivity.class);
                t.putExtra("data", "hello another activity");
                startActivity(t);
                //接收数据     如果不是String的就用   getIntExtra、getDoubleExtra、、、
                String dataStr= getIntent().getStringExtra("data");
第二部分是多个数据的时候的数据传递,这个时候使用Bundle装载数据

                //传递数据
                Intent t = new Intent(MainActivity.this, AnotherActivity.class);
                Bundle bundle = new Bundle();
                bundle.putString("name", "zhaungsan");
                bundle.putString("sex", "man");
                bundle.putInt("age", 11);
                t.putExtras(bundle);
                startActivity(t);
                //接收数据
                Bundle bundle=getIntent().getStringExtra("data");
                String name= bundle.getString("name");
                String sex= bundle.getString("sex");
                Integer age= bundle.getInt("age");
第三部份是传递自定义类型的数据

自定义数据类型的传递有两种:一种是实现Serializable接口;另一种是实现Parcelabe接口

实现Serializable接口

public class User implements Serializable {

    private String name;
    private String sex;
    private int age;

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    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;
    }

    public User(String _name, int _age, String _sex) {
        this.age = _age;
        this.sex = _sex;
        this.name = _name;
    }
}
实现了Serializable接口后就可以直接用来传递数据了

                //传递数据
                Intent t = new Intent(MainActivity.this, AnotherActivity.class);
                t.putExtra("user", new User("zhangsan", 24,"man"));
                startActivity(t);
                //接收数据
                User intUser = (User) getIntent().getSerializableExtra("user");

实现Parcelabe接口

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

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    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;
    }

    public User(String _name, int _age, String _sex) {
        this.age = _age;
        this.sex = _sex;
        this.name = _name;
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        Bundle bundle = new Bundle();
        bundle.putString("name", getName());
        bundle.putString("sex", getSex());
        bundle.putInt("age", getAge());
        dest.writeBundle(bundle);
    }

    public static final Creator<User> CREATOR = new Creator<User>() {
        @Override
        public User createFromParcel(Parcel source) {
            Bundle bundle = source.readBundle();
            return new User(bundle.getString("name", "zhangsan"), bundle.getInt("age", 0), bundle.getString("sex", "man"));
        }

        @Override
        public User[] newArray(int size) {
            return new User[size];
        }
    };
}
实现了Parcelabe接口后就可以直接用来传递数据了
                //传递数据
                Intent t = new Intent(MainActivity.this, AnotherActivity.class);
                t.putExtra("user", new User("zhangsan", 24,"man"));
                startActivity(t);
                //接收数据
                User intUser = (User) getIntent().getParcelableExtra("user");
实现自定义数据传递的两种方法差别很大,一种使用简单,但是速度却很慢就是Serializable,一种使用有点麻烦,但是速度却很快就是Parcelabe。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值