借助Intent实现Android工程中Activity之间Java对象的传递有两种方式:一种所传递对象实现了Serializable接口;另一种是所传递对象实现了Parcelable接口,本博客总结传递对象实现Parcelable接口的情况下如何实现Java对象传递:

代码1、添加名为“User.java”的文件:

package com.ghj.vo;import android.os.Parcel;
import android.os.Parcelable;public class User implements Parcelable{private String id;private String name;public User(String id, String name) {this.id = id;this.name = name;}/*** 实现Parcelable接口的writeToParcel方法,将需要传递的数据写入Parcel“容器”中,以便从 Parcel“容器”获取数据。*/@Overridepublic void writeToParcel(Parcel out, int flags) {out.writeString(id);out.writeString(name);}/*** 实例化静态内部对象CREATOR实现接口Parcelable.Creator。注意:其中public static final一个都不能少,内部对象CREATOR的名称不能改变且必须全部大写。*/public static final Creator<User> CREATOR = new Creator<User>(){@Overridepublic User[] newArray(int size){return new User[size];}/*** 从Parcel“容器”中读取传递数据值,并封装成单个User实体*/@Overridepublic User createFromParcel(Parcel in){return new User(in.readString(), in.readString());}};public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}/*** 描述内容,一般返回0即可。*/@Overridepublic int describeContents() {return 0;}
}

说明:上面User类通过实现Parcelable接口的writeToParcel方法将需要传递的数据封装成Parcel对象,再通过内部实现类实现Parcelable.Creator接口的createFromParcel方法将数据从Parcel对象中获取出来并再次封装成User对象。值得注意的是将传递的数据写入Parcel中的顺序(参见实现writeToParcel方法时)要和从Parcel中获取数据的顺序(参见实现createFromParcel方法时)一致。

代码2、添加名为“FromActivity.java”的文件:

package com.ghj.activity;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;import com.ghj.vo.User;public class FromActivity extends Activity implements OnClickListener {private Button button;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.from);button = (Button)findViewById(R.id.ok_btn);button.setOnClickListener(this);}@Overridepublic void onClick(View view) {Intent intent  = new Intent(FromActivity.this, ToActivity.class);Bundle bundle = new Bundle();User user = new User("56862586-108e-4749-93ca-440cd576ba92","王翔");bundle.putParcelable("user", user);intent.putExtras(bundle);startActivity(intent);}
}

代码3、添加名为“ToActivity.java”的文件:

package com.ghj.activity;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;import com.ghj.vo.User;public class ToActivity extends Activity{@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.to);TextView textView = (TextView)findViewById(R.id.show_user_info);Intent intent = getIntent();User user  = intent.getParcelableExtra("user");textView.setText(user.getId() + ":" + user.getName());}
}

代码4、添加名为“from.xml”的文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><Buttonandroid:id="@+id/ok_btn"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_centerHorizontal="true"android:layout_centerVertical="true"android:layout_margin="10dp"android:text="传递Java对象" /></RelativeLayout>

代码5、添加名为“to.xml”的文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><TextViewandroid:id="@+id/show_user_info"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerHorizontal="true"android:layout_centerVertical="true"/></RelativeLayout>

0分下载Demo

借助Intent实现Android工程中Activity之间Java对象的传递——实现Parcelable接口相关推荐

  1. Android TabHost中Activity之间传递数据

    例子1: TabHost tabhost = (TabHost) findViewById(android.R.id.tabhost);tabhost.setup(this.getLocalActiv ...

  2. 【Android 内存优化】Android 工程中使用 libjpeg-turbo 压缩图片 ( JNI 传递 Bitmap | 获取位图信息 | 获取图像数据 | 图像数据过滤 | 释放资源 )

    文章目录 一.Bitmap 图像数据处理 二.Java 层 Bitmap 对象转为 JNI 层 bitmap 对象 三.获取 bitmap 中的图像数据 四.过滤 bitmap 中的图像数据 ( 获取 ...

  3. 【Android 内存优化】Android 工程中使用 libjpeg-turbo 压缩图片 ( 初始化压缩对象 | 打开文件 | 设置压缩参数 | 写入压缩图像数据 | 完成压缩 | 释放资源 )

    文章目录 一.使用 libjpeg-turbo 压缩图片流程 二.初始化 JPEG 压缩对象 三.打开文件 四.设置压缩参数 五.开始压缩 六.循环写入压缩数据 七.完成图片压缩及收尾 八.libjp ...

  4. 从Android中Activity之间的通信说开来

    引言 最近两个星期在研究android的应用开发,学习了android应用开发的基础知识,基本控件,基本布局,基本动画效果,数据存储,http访问internet等等基础知识. android中有一个 ...

  5. 三个activity之间跳转 数据传递_第二百四十二回:Android中Fragment之间的数据传递概述...

    各位看官们大家好,上一回中咱们说的是Android中Activity之间数据传递的例子,这一回咱们说的例子是Fragment之间的数据传递.闲话休提,言归正转.让我们一起Talk Android吧! ...

  6. android工程中的软件,通过Android Studio创建Android应用程序(附带解析)

    这一节我们主要来创建一个简单的 Android 的应用程序. 创建 HelloWorld 工程 启动 Android Studio,依次选择 File --> New --> New Pr ...

  7. android 友盟统计功能,在Android工程中集成友盟统计

    在Android工程中集成友盟统计 首先需要在友盟官网注册账号并添加新应用,获取Appkey.具体步骤这里不进行叙述. 1.集成准备 首先需要集成友盟统计SDK 有两种方式: 1.下载SDK,并复制到 ...

  8. Intellij Idea 多模块Maven工程中模块之间无法相互引用问题

    一.问题背景 在Intellij idea中,新建Maven项目,在魔项目中新建多个模块,发现模块间相互调用失败 二.问题原因 模块间无法相互引用为IDEA的一个BUG 三.问题解决 1.点击项目右上 ...

  9. 在Android工程中,添加ICON资源

    在Android工程中,每添加一个资源,就会在gen目录下的R.java中自动生成一个新的静态整型变量来指向这个资源.程序文件中调用资源的时候,先在R.java中找到变量名,然后根据变量值查找资源. ...

  10. Android工程中添加图片资源

    转载自:http://www.baiyuxiong.com/?p=69 在Android工程中,每添加一个资源,就会在gen目录下的R.java中自动生成一个新的静态整型变量来指向这个资源.程序文件中 ...

最新文章

  1. 三层架构(我了解并详细分析)
  2. qt 程序异常结束。_博声医疗:QT间期,QT间期正常范围
  3. 洛谷 P1417 烹调方案
  4. Activit系列之---Activity的生命周期
  5. 3-7Tensor的算术运算
  6. git常用命令与常见错误
  7. 如何将access数据库导入到sql2005数据库中
  8. 在阿里云上遇见更好的Oracle(三)
  9. angularjs 实例_AngularJS包含示例教程
  10. 网络地址转换 NAT
  11. IntelliJ IDEA设置TortoiseSVN插件(Cannot run program svn)
  12. 卓有成效的管理者—第七章 有效的决定
  13. RapidMiner
  14. 如何调整html中音乐播放器的大小,请教音乐播放器大小如何调整?
  15. Java 替换PDF中的字体
  16. 大数据职业理解_大数据职业规划总结
  17. Flash和JS实现的图片幻灯片切换特效
  18. 从根节点到叶节点的路径数字之和
  19. 1838公共政策概论 (2)
  20. 软件测试基本方法介绍

热门文章

  1. 解析大型.NET ERP系统 单据标准(新增,修改,删除,复制,打印)功能程序设计...
  2. hadoop2.2.0 MapReduce求和并排序
  3. [POJ3274 Gold Balanced Lineup]
  4. MySQL中 slave_compressed_protocol=ON 的压缩效果实验
  5. SylixOS Python扩展库开发
  6. servlet无法自动在web.xml中配置
  7. 关于MSDTC - 与基础事务管理器的通信失败 错误解决的小备忘
  8. Linux shell脚本基础学习(上)
  9. USACO Section 1.2 Name That Number
  10. 程序江湖:第五章 机会是一种困扰