在Activity中传递对象(使用Parcelable方式)

本文详细介绍了在Android应用中如何使用Serializable和Parcelable两种方式在不同Activity间传递对象,包括对象的定义、创建过程及实际应用案例。
参考文章
Android中如何使用Intent在Activity之间传递对象[使用Serializable或者Parcelable]
[url]http://blog.youkuaiyun.com/cjjky/article/details/6441104[/url]

[color=darkred]数据类型有限,比如遇到不可序列化的数据Bitmap,InputStream, 或者LinkList链表等等数据类型就不太好用。
[/color]

要传递的对象

package com.andy.entity;  

package com.andy.entity;

import android.os.Parcel;
import android.os.Parcelable;

public class Police implements Parcelable {

private String name;
private int workTime;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getWorkTime() {
return workTime;
}

public void setWorkTime(int workTime) {
this.workTime = workTime;
}

public static final Parcelable.Creator<Police> CREATOR = new Creator<Police>() {

@Override
public Police createFromParcel(Parcel source) {
Police police = new Police();
police.name = source.readString();
police.workTime = source.readInt();
return police;
}

@Override
public Police[] newArray(int size) {
return new Police[size];
}
};

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

@Override
public void writeToParcel(Parcel parcel, int flags) {
parcel.writeString(name);
parcel.writeInt(workTime);
}
}

/**
* Pacelable传递对象方法
*/
private void PacelableMethod(){
Police mPolice = new Police();
mPolice.setName("I am Police");
mPolice.setWorkTime(2008);
Intent mIntent = new Intent(this,ParcelableDemo.class);
Bundle mBundle = new Bundle();
mBundle.putParcelable(PAR_KEY, mPolice);
mIntent.putExtras(mBundle);

startActivity(mIntent);
}
}



接受对象的Activity

package com.andy.testdemo;

import com.andy.entity.Police;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class ParcelableDemo extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

TextView mTextView = new TextView(this);
Police mPolice = (Police)getIntent().getParcelableExtra(TestActivity.PAR_KEY);
mTextView.setText("Police name is: " + mPolice.getName()+"/n"+
"WorkTime is: " + mPolice.getWorkTime() + "/n");
setContentView(mTextView);
}

}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值