Android学习——Intent传递数据

本文详细介绍了在Android中使用Intent传递不同类型数据的方法,包括基本数据类型、自定义对象(通过实现Serializable和Parcelable接口)、数组以及集合。通过实例代码展示了如何放数据和取数据,帮助开发者理解Intent在数据传输中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(1)基本数据类型:
放数据:
MainActivity.java:
Intent intent = new Intent(this,OtherActivity.class);
//传递基本数据类型
intent.putExtra(“data1”,true);
intent.putExtra(“data2”,1234.567890);
intent.putExtra(“data3”,45600000);
intent.putExtra(“data4”,’A’);
startActivity(intent);

取数据:
OtherAcitvity.java:
Intent intent = this.getIntent();
System.out.println(intent.getBooleanExtra(“data1”, false));
System.out.println(intent.getIntExtra(“data3”, 1111));
System.out.println(intent.getCharExtra(“data4”,’x’));
System.out.println(intent.getDoubleExtra(“data2”, 0.00));
执行后,结果:
这里写图片描述
(2)传递自定义对象
方式1:实现Serializable接口

public class Dog implements Serializable{
    private String name;
    private int age;

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

    @Override
    public String toString() {
        return "Dog{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

//传递数据:
//传递对象方法1:实现Serializable接口
intent.putExtra(“data5”,new Dog(“大黄”,3));
//接受数据:
Dog d = (Dog) intent.getSerializableExtra(“data5”);需要强转成Dog类型
System.out.println(d.toString());
方式2:实现Parcelable接口

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

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

    @Override
    public String toString() {
        return "Person{"+"name='" + name + '\'' +  ", age=" + age +     '}';
    }

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

    //写数据
    @Override
    public void writeToParcel(Parcel parcel, int i) {
        parcel.writeString(name);
        parcel.writeInt(age);
    }

    //读数据,固定写法,CREATOR
    public static final Creator<Person> CREATOR = new Creator<Person>() {
        @Override
        public Person createFromParcel(Parcel parcel) {
            //读和写的顺序必须一致
            String name = parcel.readString();
            int age = parcel.readInt();
            return new Person(name, age);
        }

        @Override
        public Person[] newArray(int i) {
            return new Person[0];
        }
    };
}

//传递数据:

//传递对象方法2:Parcelable接口
intent.putExtra(“data6”,new Person(“二黄”,5));
//接受数据:
Person p = intent.getParcelableExtra(“data6”);不用强制类型转换
System.out.println(p.toString());
运行结果:
这里写图片描述
(3)传递数组:
//放数据
intent.putExtra(“data7”,new boolean[]{true,false,true});
Person[] persons = {new Person(“xxx1”,20),new Person(“xxx2”,20),new Person(“xxx3”,20)};
intent.putExtra(“data8”,persons);
//取数据:
boolean[] booleans = intent.getBooleanArrayExtra(“data7”);
System.out.println(Arrays.toString(booleans));
Parcelable[] parcelables = (Parcelable[]) intent.getParcelableArrayExtra(“data8”);
for (Parcelable parcelable:parcelables){
Person per = (Person) parcelable;
System.out.println(per.toString());
}
运行结果:
这里写图片描述
(4)传递集合
放数据:
//传递集合:方式一
ArrayList dogs1 = new ArrayList<>();
dogs1.add(new Dog(“gougou1”,10));
dogs1.add(new Dog(“gougou2”,10));
dogs1.add(new Dog(“gougou3”,10));
intent.putExtra(“data9”,(Serializable)dogs1);
//传递集合:方式二
ArrayList persons1 = new ArrayList<>(Arrays.asList(persons));
intent.putParcelableArrayListExtra(“data10”,persons1);
取数据:
ArrayList dogs1 = (ArrayList)intent.getSerializableExtra(“data9”);
for(Dog d1:dogs1){
System.out.println(d1);
}
ArrayList persons1 = intent.getParcelableArrayListExtra(“data10”);
for(Person p1:persons1){
System.out.println(p1);
}
运行结果:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值