Activity之间通过Intent传递值,支持基本数据类型和String对象及它们的数组对象byte、byte[]、char、char[]、boolean、boolean[]、short、short[]、int、int[]、long、long[]、float、float[]、double、double[]、String、String[]。还有实现了Serializable、Parcelable接口的类对象。

实现Serializable接口和实现Parcelable接口传递类对象的方法各自是:

(1)Bundle.putSerializable(Key,Object);

(2)Bundle.putParcelable(Key, Object);

实际上Serializable和Parcelable接口都是能够完毕对象的序列化过程,所以当我们须要通过Intent或者Binder数据传输的时候就须要使用Parcelable或者Serialization。

另一些时候我们须要把对象持久化到存储设备上或者通过网络传输给其它client等都须要使用到Serialization来完毕对象的持久化。

我们简单看一下第一种方法:Serialization接口

我新建了一个UserModel.java类实现了Serializable接口。使用Serialization实现序列化特别简单,仅仅须要这个类实现Serialization接口并声明一个serialVersionUID 就可以。

package com.xiaolijuan.serializabledome.model;

import java.io.Serializable;

/**
* @author: xiaolijuan
* @description:
* @date: 2016-04-03
* @time: 21:23
*/
public class UserModel implements Serializable{ private static final long serialVersionUID = 6465198351058235015L;
public int userId;
public String userName;
public boolean isMale; public UserModel(int userId, String userName, boolean isMale) {
this.userId = userId;
this.userName = userName;
this.isMale = isMale;
} public int getUserId() {
return userId;
} public void setUserId(int userId) {
this.userId = userId;
} public String getUserName() {
return userName;
} public void setUserName(String userName) {
this.userName = userName;
} public boolean isMale() {
return isMale;
} public void setIsMale(boolean isMale) {
this.isMale = isMale;
}
}

实际上,serialVersionUID 也没必要的,我们不声明这个serialVersionUID 相同也能够实现序列化。可是这个会对反序列化过程造成影响,具体就不具体介绍了。

接着我们在MainActivity.java中传递实现了Serializeable接口的UserModel对象

 //序列化过程
UserModel userModel = new UserModel(0, "lijuan", true);
Intent intent = new Intent(MainActivity.this,
SecondActivity.class);
intent.putExtra("userModel", userModel);
startActivity(intent);

如今在SecondActivity.java中就能够接收到从MainActivity.java传递过来的UserModel啦

 //反序列化过程
UserModel userModel = (UserModel) getIntent()
.getSerializableExtra("userModel");
Log.e("TAG", "用户Id:" + userModel.getUserId() + ",username:" + userModel.getUserName() + ",男生?" + userModel.isMale());

此时在日志中就会打印出我们这行信息啦

04-03 23:38:56.020  10596-10596/com.xiaolijuan.serializabledome E/TAG﹕ 用户Id:0。username:lijuan,男生?true

插入一个话题,假设我们要声明serialVersionUID,那么serialVersionUID后面那一长串数字又是怎么来的呢?

在Android Studio中,我们能够设置自己主动生成 serialVersionUID,接下来看一下吧

File -> Settings->Editor -> Inspections -> Serialization issues -> Serializable class without ‘serialVersionUID’(此时记得打勾哦),然后点击OK就能够了



找不到的话能够直接在Preference中搜索Serialization issues



回到须要实现Serialization接口的类中,选中类名就直接Alt+enter就会提示了

如今就会多出这一行啦

private static final long serialVersionUID = 6465198351058235015L;

本篇博客在这里就结束了,有不足的地方还望各路大神指导 。谢谢!

Android中Intent传递类对象的方法一(Serializable)的更多相关文章

  1. Android 通过 Intent 传递类对象或list对象

    (转:http://www.cnblogs.com/shaocm/archive/2013/01/08/2851248.html) Android中Intent传递类对象提供了两种方式一种是 通过实现 ...

  2. Android 通过 Intent 传递类对象

    Android中Intent传递类对象提供了两种方式一种是 通过实现Serializable接口传递对象,一种是通过实现Parcelable接口传递对象. 要求被传递的对象必须实现上述2种接口中的一种 ...

  3. android通过 Intent 传递类对象

    Android中Intent传递类对象提供了两种方式一种是 通过实现Serializable接口传递对象,一种是通过实现Parcelable接口传递对象. 要求被传递的对象必须实现上述2种接口中的一种 ...

  4. Android 开发笔记——通过 Intent 传递类对象

    Android中Intent传递类对象提供了两种方式一种是 通过实现Serializable接口传递对象,一种是通过实现Parcelable接口传递对象. 要求被传递的对象必须实现上述2种接口中的一种 ...

  5. Android中Intent传递对象的两种方法(Serializable,Parcelable)

    今天要给大家讲一下Android中 Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializable(Key,Object);另一种是 Bundle.putP ...

  6. [转]Android中Intent传递对象的两种方法(Serializable,Parcelable)

    http://blog.csdn.net/xyz_lmn/article/details/5908355 今天要给大家讲一下Android中Intent中如何传递对象,就我目前所知道的有两种方法,一种 ...

  7. Android高手进阶教程(十七)之---Android中Intent传递对象的两种方法(Serializable,Parcelable)!

    [转][原文] 大家好,好久不见,今天要给大家讲一下Android中Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializable(Key,Object); ...

  8. 【转】Android中intent传递对象和Bundle的用法

    原文网址:http://blog.csdn.net/lixiang0522/article/details/8642202 android中的组件间传递的对象一般实现Parcelable接口,当然也可 ...

  9. Android——使用 Intent传递类

    定义要传递的类事,必须加上 public class Movie implements Serializable { } 传入类: public void onItemClick(AdapterVie ...

随机推荐

  1. java中的控制语句

    控制语句 1.1 顺序结构 (最常见的) 特点:代码从上往下依次执行 1.2 选择结构 : if 判断语句 : switch 判断语句: Switch语句使用的注意事项: 1.每一个语句结束后需要有一 ...

  2. luogu P1313 计算系数

    二项式定理 组合数取膜 费马小定理 #include<iostream> using namespace std; #define mod 10007 #define int long l ...

  3. [BZOJ3551][ONTAK2010]Peaks(加强版)(Kruskal重构树,主席树)

    3551: [ONTAK2010]Peaks加强版 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 2438  Solved: 763[Submit][ ...

  4. [BZOJ 3144] 切糕

    Link: BZOJ 3144 传送门 Solution: 发现要把点集分成不连通的两部分,最小割的模型还是很明显的 首先我们将原图转化为$R+1$层,从而将点权化为边权 关键还是在于建图是怎么保证$ ...

  5. [USACO17DEC]Greedy Gift Takers

    题目描述 Farmer John's nemesis, Farmer Nhoj, has NN cows (1 \leq N \leq 10^51≤N≤105 ), conveniently numb ...

  6. ubuntu16.04_install_saltstack_更新版本

    一.ubuntu16.04版本,安装saltstack 参考官方文档: https://repo.saltstack.com/#ubuntu 二.安装方法 Installs the latest re ...

  7. nagios学习记录

    这几天开始接触nagios,记录下学习的心得 监控机上需要安装nagios,nagios-plugins, nrpe 被监控机上需要安装nagios-plugins, nrpe nagios通过插件n ...

  8. D3.js系列——初步使用、选择元素与绑定数据

    D3 的全称是(Data-Driven Documents),顾名思义可以知道是一个被数据驱动的文档.听名字有点抽象,说简单一点,其实就是一个 JavaScript 的函数库,使用它主要是用来做数据可 ...

  9. Spark下载与入门(Spark自学二)

    2.1 下载Spark 略 2.2 Spark中Python和Scala的shell Spark shell可用来与分布式存储在许多机器的内存或者硬盘上的数据进行交互,并且处理过程的分发由Spark自 ...

  10. 实用且免费API接口2

    之前已经整理过一些免费API,现在在知乎专栏上看到别人整理的一些实用免费API,有一些是没有重复的,因此也搬过来. 今天的内容,很适合你去做一些好玩.实用的东西出来. 先来科普个概念,开放应用程序的A ...