android Activity之间传递对象
android 不同activity之间传递对象有两种方式:
Bundle 的 1) public void putSerializable(String key, Serializable value) ; 2)public void putParcelable(String key, Parcelable value)
所以传递类需要 implements Serializable 或者 implements Parcelable 即可。
一)implements Serializable 、 Parcelable的两个类:
1)Serializable: Mobile.java
package com.example.objecttest.myclass;import java.io.Serializable;public class Mobile implements Serializable {private static final long serialVersionUID = 5403208217014231126L;private String model;public Mobile(String model) {super();this.model = model;}public String getModel() {return model;}public void setModel(String model) {this.model = model;}}
2)public interface Parcelable
如果某个类实现了这个接口,那么它的对象实例可以写入到
Parcel
中,并且能够从中恢复,并且这个类必须要有一个
static
的
field
,并且名称要为
CREATOR
,这个
field
是某个实现了
Parcelable.Creator
接口的类的对象实例。
public static interface Parcelable.Creator
Interface that must be implemented and provided as a public CREATOR field that generates instances of your Parcelable class from a Parcel
其有两个成员函数:createFromParcel和newArray。
createFromParcel函数创建实现Parcelable接口的某个类的一个新的对象实例,并且用从给定的Parcel中获取的数据进行实例化,Parcel中的数据是在之前通过Parcelable.writeToParcel方式写入的数据。
newArray函数创建实现Parcelable接口的某个类的一个新的对象数组,数组中的每个项都被初始化为null。
Parcelable : Pad,java
package com.example.objecttest.myclass;import android.os.Parcel;import android.os.Parcelable;public class Pad implements Parcelable {private String model;public Pad(String model) {super();this.model = model;}public static final Parcelable.Creator CREATOR = new Creator() {public Pad createFromParcel(Parcel source) {Pad mBook = new Pad(source.readString());return mBook;}public Pad[] newArray(int size) {return new Pad[size];}};@Overridepublic int describeContents() {// TODO Auto-generated method stubreturn 0;}@Overridepublic void writeToParcel(Parcel dest, int flags) {// TODO Auto-generated method stubdest.writeString(model);}//public String getModel() {return model;}public void setModel(String model) {this.model = model;}}
二 )使用:
1)
/**
* Serializeable传递对象的方法
*/
private void SerializeMethod() {
Mobile mMobile = new Mobile("ME811");
Intent mIntent = new Intent(this, SerializableActivity.class);
Bundle mBundle = new Bundle();
mBundle.putSerializable(SER_KEY, mMobile);
mIntent.putExtras(mBundle);
startActivity(mIntent);
}
2)
/**
* Pacelable传递对象方法
*/
private void PacelableMethod() {
Pad mPolice = new Pad("Nexus 7");
Intent mIntent = new Intent(this, ParcelableActivity.class);
Bundle mBundle = new Bundle();
mBundle.putParcelable(PAR_KEY, mPolice);
mIntent.putExtras(mBundle);
startActivity(mIntent);
}
三 )获得传递过来的结果:
1)Mobile mPerson = (Mobile) getIntent().getSerializableExtra(SER_KEY);
2)Pad mPad = (Pad) getIntent().getParcelableExtra(PAR_KEY);
更多相关文章
- android 中调用接口发送短信
- 【Android】Web开发之通过标准Java接口处理Http请求
- FregClient进程,创建一个BpFregService类型的代理对象
- 实例教程八:采用ListView实现数据列表显示
- android XMl 解析神奇xstream 三: 把复杂对象转换成 xml
- AIDL(android 接口描述语言)
- Android中一个Activity调用另一个Activity — Intent对象的使用
- Fragment+viewpager 傻子都能看懂的demo 实例(博主就是个傻子)
- android与tomcat服务器交互实例