您的位置:首页 > 移动开发 > Android开发

Android学习——Intent传递数据

2015-09-19 22:39 453 查看
(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);

}

运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: