android 之对象传递
来源:互联网 发布:mac涂层脱落 编辑:程序博客网 时间:2024/05/16 06:45
在android 的Activity 中,两个Activity 中对象的传递。
通常我们使用意图来启动另一个Activity.如》 Intent intent = new Intent(MainActivity.this,OtherActivity.class);
如果在两个Activity中传递数据就需要用到一个对象 Bundle bun = new Bundle();
我们可以把Bundle 理解成一个容器,类似于map这样的东西。把"普通"对象放到里边,然后就可以在另一个Activity中获取该对象.
比方说:
bun.putString("name","华仔"); bun.putInt("age", 18);而在另一个Activity 中就可以用。
Intent intent = this.getIntent(); String name = intent.getStringExtra("name");就可以获取到值。这里所说的普通对象。
那么自定义对象在android中应该怎么实现呢。
我记得在java语言中。如果对象网络上传输就得实现序列化。自定义类需要实现 java.io.Serializable.
而在android 的应用中这样的方法同样可行代码如下。
package com.hkrt.domain;/**person 实体*/public class Person implements java.io.Serializable {private static final long serialVersionUID = -1115440875848739771L;private int id;private String name;private double money;public Person(String name, double money) {super();this.name = name;this.money = money;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getMoney() {return money;}public void setMoney(double money) {this.money = money;}@Overridepublic String toString() {return "Person [id=" + id + ", money=" + money + ", name=" + name + "]";}}
在android 中代码就可以用
Person per = new Person("张三",5896.20); bun.putSerializable("person", per);进行数据传递。
在另一个Activity 中就可以这样获取了。
Bundle bun = intent.getExtras();Person per =(Person)bun.getSerializable("person");
第二种方法。就是自定义数据对象实现 android.os.Parcelable。译为:包裹
同样可以理解成容器。代码如下:
package com.hkrt.domain;import android.os.Parcel;import android.os.Parcelable;public class Student implements android.os.Parcelable {private String name;private int age;private double score;public Student() {super();}public Student(Parcel parcel) {name = parcel.readString();age = parcel.readInt();score = parcel.readDouble();}public Student(String name, int age, double score) {super();this.name = name;this.age = age;this.score = score;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public double getScore() { return score;}public void setScore(double score) {this.score = score;}@Overridepublic int describeContents() {return 0;}@Overridepublic void writeToParcel(Parcel parcel, int flags) {parcel.writeString(name);parcel.writeInt(age);parcel.writeDouble(score);} public static final Parcelable.Creator<Student> CREATOR = new Parcelable.Creator<Student>() { public Student createFromParcel(Parcel in) { return new Student(in); } public Student[] newArray(int size) { return new Student[size]; }};}官方解释如下:
nterface for classes whose instances can be written to and restored from a Parcel. Classes implementing the Parcelable interface must also have a static field called CREATOR, which is an object implementing the Parcelable.Creator interface.
在android 的代码就可以这样写了。
Student stu = new Student("李四", 20, 100.00); bun.putParcelable("stu", stu);而在另一个Activity中就可以获取到这个自定义对象Student.
Student stu = (Student)bun.getParcelable("stu");
结果图:
- android 之对象传递
- android之传递对象(Parcelable,Serializable)
- android之传递对象(Parcelable,Serializable)
- Android之AIDL示例(传递对象)
- Android--Service之AIDL传递复杂对象
- Android开发之使用Intent传递对象
- Android 用Intent 传递对象之 Serializable
- Android 用Intent 传递对象之 Parcel
- android学习之intent对象传递类
- Android NDK 学习之传递类对象
- Android之Activity之间传递对象
- Android之Activity之间传递对象
- android之Service介绍之三 AIDL与传递对象
- android之Service介绍之三 AIDL与传递对象
- android之Service介绍之三 AIDL与传递对象
- android之Service介绍之三 AIDL与传递对象
- android之Service介绍之三 AIDL与传递对象
- Android传递对象
- C# winform与Javascript的相互调用
- xsd文档定义schema方式
- C# 事务的调用和回滚
- 巧用数据库
- 创建一个圆锥
- android 之对象传递
- Hyper-v中安装和配置ubuntu
- 2KTO2K8-跨数据库服务器的操作
- Xilinx 2012校园招聘火热进行中(硕士,博士)
- hdoj1021
- python 之性能优化
- js验证函数 验证手机 邮箱/email 邮编 身份证 中文 ip及S有3种方式来获取元素
- ranlib的作用
- ejb2.0---无状态会话bean