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接口
//传递数据:
//传递对象方法1:实现Serializable接口
intent.putExtra(“data5”,new Dog(“大黄”,3));
//接受数据:
Dog d = (Dog) intent.getSerializableExtra(“data5”);需要强转成Dog类型
System.out.println(d.toString());
方式2:实现Parcelable接口
//传递数据:
//传递对象方法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);
}
运行结果:
放数据:
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);
}
运行结果:
相关文章推荐
- Android无限循环ViewPager
- Android基础学习之SlidingMenu(侧滑菜单)
- AS边学边写——day03简单的用户界面
- android
- 解决com.android.dex.DexException: Multiple dex files define Lcom/google/gson/JsonSerializer;
- 使用Android Studio进行本地单元测试(Local Unit Tests)
- [转]android中drawable资源的解释及例子
- Android之AnimationSet
- 当dialog挡住activity时的 键盘隐藏
- 【Android小游戏】安卓小游戏开发(直播手把手系列二)
- Android核心基础-10.通知
- Android Studio 百度地图开发
- Android注释技巧
- Android 动画之一 Drawable Animation —— 逐帧(Frame)动画
- 高速建成Android开发环境ADT-Bundle和Hello World
- 轻松学会android中补间动画
- android的存储
- Android Intent分享文件|分享图片|分享文字|功能的实现
- 个人日记-安卓里OnPageChangeListener的坑爹
- android性能测试内存泄漏