Activity之间传递数据

来源:互联网 发布:威锋论坛mac office 编辑:程序博客网 时间:2024/05/22 15:22

在Activity之间传递数据时有两种方式
1、Serializable方式:序列化方式,即将一个对象转化为可存储或者是可传输的内容,相应的将数据从内存卡中读取出来是反序列化方式
2、Parcelable方式:将一个完整的对象分解成每一个都可以用Intent传输的对象。

使用Serializable传递数据

        Intent intent = new Intent(MainActivity.this, SecondActivity.class);        //传递boolean类型        intent.putExtra("boolean", true);        //传递字符串类型        intent.putExtra("String", "String");        //传递整型        intent.putExtra("Integer", 0);        //有时候需要同时传递多个数据,这时我们可以使用一个Bundle将其封装起来        Bundle bundle = new Bundle();        bundle.putString("s", "s");        //传递实体类时,必须实现Serializable接口        bundle.putSerializable("man", new Man("jack", 10));        //传递字符型        bundle.putChar("char", 'c');        //将bundle放入到intent中        intent.putExtras(bundle);        //启动activity        startActivity(intent);
        //获取数据是也比较简单,对应类型就行了:        String data = getIntent().getStringExtra("String");        //获取到Bundle对象        Bundle extras = getIntent().getExtras();        //再根据bundle中 类型获取到对应的数据

使用Parceleable传递数据

public class Person implements Parcelable {    private String name;    private int age;    private int id;    public Person(String name, int age, int id) {        this.name = name;        this.age = age;        this.id = id;    }    //读取数据:什么类型对应其相应的类型    protected Person(Parcel in) {        name = in.readString();        age = in.readInt();        id = in.readInt();    }    public static final Creator<Person> CREATOR = new Creator<Person>() {        @Override        public Person createFromParcel(Parcel in) {            return new Person(in);        }        @Override        public Person[] newArray(int size) {            return new Person[size];        }    };    @Override    public String toString() {        return "name:" + name + "\t" + "age:" + age + "\t id:" + id;    }    @Override    public int describeContents() {        return 0;    }    //往Parcelable中写入相应的数据    @Override    public void writeToParcel(Parcel dest, int flags) {        dest.writeString(name);        dest.writeInt(age);        dest.writeInt(id);    }}读取方式都是相同的。
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 两岁宝宝不爱喝水怎么办 两岁宝宝不爱喝水吃饭怎么办 两岁的宝宝不爱喝水怎么办 宝宝不爱吃饭不爱喝水怎么办 一多半宝宝爱喝水 不爱吃饭怎么办 1岁宝宝不爱吃饭喝水怎么办 两岁小宝宝不爱吃饭怎么办 4个月小宝宝咳嗽怎么办 3个月小宝宝咳嗽怎么办 2个月小宝宝咳嗽怎么办 8的岁儿童腿不直怎么办 作业盒子选错年级怎么办 两岁x型腿怎么办 绿萝叶子有水滴怎么办 打游戏变菜了怎么办 车被记号笔画了怎么办 水溶性彩铅受潮了怎么办 马克笔颜色涂深了怎么办 染发膏染眉毛了怎么办 用电容笔画画手有触感怎么办 CAD画图线性数字不居中怎么办 3d立体画笔堵塞怎么办 龋齿树脂填充老化后怎么办 小孩补过的牙疼怎么办 颜料弄到墙纸上怎么办 4岁的宝宝不爱涂色怎么办 oppo手机截图存不到相册怎么办 做的ih5保存不了怎么办 小偷偷东西发现后逃跑了怎么办? 网上有人传迷信诅咒怎么办 颜料粘在衣服上怎么办 家里有小偷撬锁怎么办 在家有人在撬门怎么办 6个月的宝宝腹泻怎么办 六个月大的宝宝拉肚子怎么办 六个月宝宝着凉拉肚子怎么办 六个月婴儿着凉拉肚子怎么办 怀孕六个月着凉拉肚子怎么办 六个月的婴儿消化不好怎么办 六个月婴儿不好好吃奶怎么办 六个月婴儿消化不好怎么办