Android_Intent_note

Activity间传递参数的方法
方法1. 通过putExtra()传递基本数据类型
方法2. 通过putExtras()传递Bundle数据类型
方法3. 通过Application读写全局变量

方法4. 把基本的数据类型封装到一个对象中,然后通过intent传递该对象
需要考虑对Person对象进行序列化

Java中的序列化使用Serializable
Android中的序列化使用Parcelable

用法如下:
1. 需要对可序列化的类,实现Parcelable接口
2. 实现Parcelable接口中的抽象方法
2.1 describeContents() 该方法直接返回0
2.2 writeToParcel(Parcel out, int flags) 把需要序列化的参数写入out中 比如:
out.writeString(name);
out.writeInt(age);
out.writeDouble(weight);
3. 定义一个静态的属性CREATOR 是Parcelable.Creator的对象
在该匿名内部类中,实现Parcelable.Creator中的两个方法(泛型参数为类名)
方法1.
createFromParcel(Parcel in) 对in进行反序列化(需要通过Person的构造器实现)
方法2.
newArray(Parcel in) 反序列化多个元素时使用

4. 定义私有的构造器 从in中反序列对应的参数(反序列化参数的顺序必须与序列化参数的顺序保持一致)


当SecondActivity需要回传参数时:
1. MainActivity启动SecondActivity时需要调用startActivityForResult()
并定义请求码
2. SecondActivity在合适的使用调用setResult()设置返回码和返回的参数
然后调用finish()结束当前Activity
3. MainActivity需要重写onActivityResult()捕获SecondActivity返回的结果

常用的返回码为:
RESULT_OK 成功
RESULT_CANCEL 失败
RESULT_FIRST_USER 用户自定义的返回码
RESULT_FIRST_USER + 1
RESULT_FIRST_USER + 2
……

原文地址:https://www.cnblogs.com/fangg/p/5566234.html