今天的破事,我们来聊聊在Android中,如果在两个Activity之间传递对象。
首先我们知道利用Intent的putExtra方法放入要传递的数据。看看API上的函数:
Intent |
putExtra(
String name, double[] value)
Add extended data to the intent.
|
Intent |
putExtra(
String name, int value)
Add extended data to the intent.
|
Intent |
putExtra(
String name,
CharSequence value)
Add extended data to the intent.
|
Intent |
putExtra(
String name, char value)
Add extended data to the intent.
|
Intent |
putExtra(
String name,
Bundle value)
Add extended data to the intent.
|
Intent |
putExtra(
String name,
Parcelable[] value)
Add extended data to the intent.
|
Intent |
putExtra(
String name,
Serializable value)
Add extended data to the intent.
|
Intent |
putExtra(
String name, int[] value)
Add extended data to the intent.
|
Intent |
putExtra(
String name, float value)
Add extended data to the intent.
|
Intent |
putExtra(
String name, byte[] value)
Add extended data to the intent.
|
Intent |
putExtra(
String name, long[] value)
Add extended data to the intent.
|
Intent |
putExtra(
String name,
Parcelable value)
Add extended data to the intent.
|
Intent |
putExtra(
String name, float[] value)
Add extended data to the intent.
|
Intent |
putExtra(
String name, long value)
Add extended data to the intent.
|
Intent |
putExtra(
String name,
String[] value)
Add extended data to the intent.
|
Intent |
putExtra(
String name, boolean value)
Add extended data to the intent.
|
Intent |
putExtra(
String name, boolean[] value)
Add extended data to the intent.
|
Intent |
putExtra(
String name, short value)
Add extended data to the intent.
|
Intent |
putExtra(
String name, double value)
Add extended data to the intent.
|
Intent |
putExtra(
String name, short[] value)
Add extended data to the intent.
|
Intent |
putExtra(
String name,
String value)
Add extended data to the intent.
|
Intent |
putExtra(
String name, byte value)
Add extended data to the intent.
|
Intent |
putExtra(
String name, char[] value)
Add extended data to the intent.
|
Intent |
putExtra(
String name,
CharSequence[] value)
Add extended data to the intent.
|
Intent |
putExtras(
Intent src)
Copy all extras in 'src' in to this intent.
|
Intent |
putExtras(
Bundle extras)
Add a set of extended data to the intent.
|
Intent |
putIntegerArrayListExtra(
String name,
ArrayList<
Integer> value)
Add extended data to the intent.
|
Intent |
putParcelableArrayListExtra(
String name,
ArrayList<? extends
Parcelable> value)
Add extended data to the intent.
|
Intent |
putStringArrayListExtra(
String name,
ArrayList<
String> value)
Add extended data to the intent.
|
从上面的方法发现,没有直接放入object的函数。但是有一个
Intent |
putExtras(
Bundle extras)
Add a set of extended data to the intent.
|
一是Bundle.putSerializable(Key,Object);
二是采用Bundle.putParcelable(Key, Object);
其中前面一种方法中的Object要实现Serializable接口,后面一种方法中的Object要实现Parcelable接口。
结合我的项目来说下。首先在你跳转前的Activity设置bundle,这里我是想从
- LoginActivity跳转到PersonCenterActivity。
- Intent intent = new Intent();
- intent.setClass(LoginActivity.this, PersonCenterActivity.class);
- // 新建Bundle对象
- Bundle mBundle = new Bundle();
- // 放入account对象
- mBundle.putSerializable("account", (AccountInfo)msg.obj);
- intent.putExtras(mBundle);
- startActivity(intent);
说明,这里的AccountInfo需要实现Serializable接口。
- public class AccountInfo implements Serializable {
- /**
- *
- */
- private static final long serialVersionUID = 9060527069391618394L;
- public String userId;
- public String accountId;
- public String phone;
- public String email;
- public String password;
- public String nickName;
- public String birthday;
- public String userImage;
- public String enable;
- public String mobileOS;
- public String signIn;
- public String isSignIn;
- public String isAuto = "false";
- public String msg;
- public String lastLogin;
- public String getAccountId() {
- return accountId;
- }
- public void setAccountId(String accountId) {
- this.accountId = accountId;
- }
- public String getSignIn() {
- return signIn;
- }
- public void setSignIn(String signIn) {
- this.signIn = signIn;
- }
- public String getIsSignIn() {
- return isSignIn;
- }
- public void setIsSignIn(String isSignIn) {
- this.isSignIn = isSignIn;
- }
- public void setMsg(String msg) {
- this.msg = msg;
- }
- public void setUserId(String userId) {
- this.userId = userId;
- }
- public void setPhone(String phone) {
- this.phone = phone;
- }
- public void setEmail(String email) {
- this.email = email;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- public void setNickName(String nickName) {
- this.nickName = nickName;
- }
- public void setBirthday(String birthday) {
- this.birthday = birthday;
- }
- public void setUserImage(String userImage) {
- this.userImage = userImage;
- }
- public void setEnable(String enable) {
- this.enable = enable;
- }
- public void setMobileOS(String mobileOS) {
- this.mobileOS = mobileOS;
- }
- public void setLastLogin(String lastLogin) {
- this.lastLogin = lastLogin;
- }
- public String getIsAuto() {
- return isAuto;
- }
- public void setIsAuto(String isAuto) {
- if (StringUtils.isNotNull(isAuto)) {
- this.isAuto = isAuto;
- } else {
- this.isAuto = "false";
- }
- }
- public String getUserId() {
- return userId;
- }
- public String getPhone() {
- return phone;
- }
- public String getEmail() {
- return email;
- }
- public String getPassword() {
- return password;
- }
- public String getNickName() {
- return nickName;
- }
- public String getBirthday() {
- return birthday;
- }
- public String getUserImage() {
- return userImage;
- }
- public String getEnable() {
- return enable;
- }
- public String getMobileOS() {
- return mobileOS;
- }
- public String getMsg() {
- return msg;
- }
- public String getLastLogin() {
- return lastLogin;
- }
- public void build(LoginInfo loginInfo) {
- this.msg = loginInfo.msg;
- this.accountId = loginInfo.accountId;
- this.phone = loginInfo.phone;
- this.email = loginInfo.email;
- this.password = loginInfo.password;
- this.nickName = loginInfo.nickName;
- this.birthday = loginInfo.birthday;
- this.userImage = loginInfo.userImage;
- this.enable = loginInfo.enable;
- this.mobileOS = loginInfo.mobileOS;
- this.lastLogin = loginInfo.lastLogin;
- this.signIn = loginInfo.signIn;
- this.isSignIn = loginInfo.isSignIn;
- }
- }
- Intent mIntent = new Intent(this,xxx.class);
- Bundle mBundle = new Bundle();
- mBundle.putParcelable("key", account);
- mIntent.putExtras(mBundle);
- startActivity(mIntent);
最后我们在PersonCenterActivity中onCreate方法中用下面的方法取得account对象
- AccountInfo account = (AccountInfo) getIntent().getSerializableExtra("account");
Parcelable 方式和这基本类似,这里不展开讲了。注意要传递的对象需要实现implements Parcelable。
接受对象:
- Account account = (Account)getIntent().getParcelableExtra("key");
是不是很简单,其实就这点破事。
好了今天这个破事就到这里,其实android开发就这么点破事。关于其他破事,见专栏:
更多Android开发的破事,请看专栏:《Android开发那点破事》
原创链接:http://blog.csdn.net/withiter/article/details/16946659